Qt新手,今天刚装了个"Qt_SDK_Win_offline_v1_2_en",然后照着《
C++ GUI Qt4编程 第二版》上面的第一个程序来敲。结果出现
错误,一开始是找不到头
文件,后来将书上的那句“#include<QLabel>”改为“#include<QtGUI/QLabel>”,找不到头文件错误信息消失了。
但是另外一个很奇怪的错误信息并
没有消失:“D:\QT\QtGUI\QtGUI\main.cpp:7: 错误:undefined reference to `_imp___ZN6QLabelC1ERK7QStringP7QWidget6QFlagsIN2Qt10WindowTypeEE'” 、“:-1: 错误:collect2: ld returned 1 exit status”。
源代码如下:
- #include <QtCore/QCoreApplication>
- #include <QtGui/QLabel>
- int main(int argc, char *argv[])
- {
- QCoreApplication a(argc, argv);
- QLabel *label = new QLabel("Hello Qt!");
- label->show() ;
- return a.exec();
- }
在网上搜索过,出现这种情况的原因大概有:
1、.编译成功的例子在后台
执行,有时一闪而过,如果再次build ,则会提示上述错误。
解决方法:打开任务管理器,找到相应的exe进程,关闭即可; 或者直接关闭QtCreator。
2.没有
编译成功的情况下,最常见情况是程序本身需要include的头文件被遗漏了
解决方法:细心查找基类所用的头文件,include之后即可。
3..h文件中相关的槽函数在cpp文件中没有定义
解决方法:查找遗漏的槽函数,根据需要,具体的定义。
------------------------------------------------------
前两种大概都排除了,只是第三种可能还没有排除掉。
自己打开<qlabel.h>头文件看定义,QLabel类的构造函数只有两个:
- explicit QLabel(QWidget *parent=0, Qt::WindowFlags f=0);
- explicit QLabel(const QString &text, QWidget *parent=0, Qt::WindowFlags f=0);
按上面的声明看,我的代码应该是调用第二个函数,应该没有调用错吧?如果这样的话,就真的不知道是哪里出
问题了。
请问一下前辈,是不是我没有链接相应的库?还是其它地方
出错了?
弄了很久也没找到解决办法,希望知道的前辈能够解答一下,谢谢。