作者:ngdongran_638070 | 来源:互联网 | 2023-09-15 15:20
QT下遇到这种错误提示时候需要注意以下情况:
一、cpp文件里使用了Q_OBJECT
分析:qmake不会处理.cpp文件里的Q_OBJECT,所以如果在.cpp文件中有它的话将会产生undefined reference to vtable for "xxx::xxx"。
方法1:先用moc xxxx.cpp生成相应的moc文件,再包含到.cpp里面去。
方法2:由于前面生成的Makefile时包含这个类的头文件并没有Q_OBJECT,所以在相应的Makefile里面并没有用moc xxx.h命令,最终导致链接失败,此时尝试重新运行qmake。
方法3:将包含Q_OBJECT的类声明放到 .h 头文件中,一般程序设计最好也这样做,类型定义放到头文件去做。