我应该是文中说明的情况,,, 后来删除掉了整个debug目录就可以了 ,第二种方法还未尝试,应该可以,
具体原理得得参考相关Qt Q_OBJECT宏原理了
The Q_OBJECT macro at the beginning of the class definition is necessary for all classes that define signals or slots
只有加入了Q_OBJECT,你才能使用QT中的signal和slot机制。
比如编写事件接口等程序时,有时会出现如下问题:
在PC端成功编译,但在开发板端却显示错误:
QObject::connect: No such slot QWidget::*******()
QObject::connect: (sender name: 'unnamed')
QObject::connect: (receiver name: 'unnamed')
这时候,就必须在头文件派生类的时候,首先像下面那样引入Q_OBJECT宏:
class MyMainWindow : public QWidget
{
Q_OBJECT
......
}
以下文章来源:https://jingyan.baidu.com/article/47a29f2453d772c0142399ba.html
在qt添加类的时候如果没有继承QOBJECT,使用Q_OBJECT宏,在后续的编程中当希望使用信号与槽的时候,添加了Q_OBJECT宏,在编译的时候不小心会出现如下错误
undefined reference to 'vtable for ***(类)'
解决方法如下
工具/原料
-
Qt5.4
方法一:
方法二:
说明:
-
1
在使用qt的时候,如果出现不明原因的错误,如果无从解决,可以考虑将项目关闭,将user文件,以及debug目录整个删除,在打开pro文件。
当然最好的办法就是搞明白是什么原因出现的错误。
-
2
上述错误的原因是添加Q_OBJECT宏之后,没有经过qt解析信号与槽相关部分。导致编译器编译出错。