QT错误undefined reference to vtable for **

我应该是文中说明的情况,,, 后来删除掉了整个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宏,在编译的时候不小心会出现如下错误

扫描二维码关注公众号,回复: 3943143 查看本文章

undefined reference to 'vtable for ***(类)'

解决方法如下

​QT错误undefined reference to vtable for **

工具/原料

  • Qt5.4

方法一:

  1. 1

    删除debug目录中的makefile文件,在从新编译。

    ​QT错误undefined reference to vtable for **

    END

方法二:

  1. 1

    修改pro文件,以达到修给makefile文件的目的(添加删除,空行空格都可以,只要修改pro文件就行.重新编译。

    ​QT错误undefined reference to vtable for **

    END

说明:

  1. 1

    在使用qt的时候,如果出现不明原因的错误,如果无从解决,可以考虑将项目关闭,将user文件,以及debug目录整个删除,在打开pro文件。

    当然最好的办法就是搞明白是什么原因出现的错误。

  2. 2

    上述错误的原因是添加Q_OBJECT宏之后,没有经过qt解析信号与槽相关部分。导致编译器编译出错。

猜你喜欢

转载自blog.csdn.net/idealhunting/article/details/82761332