1. 有时,如果将某个类改为继承自QObject类(以前不继承自该类),编译时会出错。

解决: clean Project, run qmake, rebulid都运行一遍,好了!

因为qmake生成Makefile的时候,这个类的头文件中并没有Q_OBJECT,所以在相应的Makefile里面并没有用moc xxx.h命令,最终导致链接失败.重新运行qmake,问题解决。

在查找解决方法的时候,附带发现一点:
qmake 不会处理.cpp文件里的Q_OBJECT,所以,如果在.cpp文件中有它的话,也会产生undefined reference to vtable for "xxx::xxx". 这时,需要先用moc xxxx.cpp生成相应的moc文件,再包含到.cpp里面去,才能解决这个问题.

深层原因:等你评论!

Ref:

https://blog.csdn.net/chenlong12580/article/details/7431104

05-11 16:14
查看更多