一、手动添加Q_OBJECT后报错处理
半路添加Q_OBJECT后,必须重新运行qmake!!
当然,你也可以随便修改一下 .pro 文件,哪怕是添加或删除一个空格或空行什么的都可以。使得qmake可以自动运行,目前采用这种方法可行
如果编译过不去的话,把头文件从项目移出去,然后重新加进来,Qt会产生一个moc文件
网上下面方法没有测试,有时间测试一下
编译后老是报undefined reference to vtable for “xxx”的错误,后来发现在xxx.pro文件中添加
OBJECTS_DIR = tmp
MOC_DIR = tmp
二、collect2ld returned 1 exit status
自己编译时因为cpp里未添加类的析构函数也会报错一定要注意
QT错误:collect2:ld returned 1 exit status
出现collect2:ld returned 1 exit status错误的原因,大概分为以下三种情况:
1、编译成功的例子在后台执行,有时一闪而过,如果再次build ,则会提示上述错误。
解决方法:打开任务管理器,找到相应的exe进程,关闭即可;??或者直接关闭QtCreator。
2、没有编译成功的情况下,最常见情况是程序本身需要include的头文件被遗漏了
解决方法:细心查找基类所用的头文件,include之后即可。
3、.h文件中相关的槽函数在cpp文件中没有定义
解决方法:查找遗漏的槽函数,根据需要,具体的定义。(碰到过一回,很关键)
4、.h文件中声明了全局变量,.cpp文件的函数里面使用了该全局变量
解决方法:.cpp文件外面没有初始化全局变量,初始化即可