我得到这个错误
/.../mainwindow.o:-1: In function `MainWindow::MainWindow(QWidget*)':
/.../mainwindow.cpp:-1: Chyba:undefined reference to `vtable for Msnger'
我不明白为什么。我发现导致此消息的唯一问题是没有定义的声明,并且我的代码中没有看到这些主题。
这是班格纳
msnger.h:
#include <QObject>
class Msnger : public QObject
{
Q_OBJECT
public:
Msnger() {};
~Msnger() {};
void sendOn();
signals:
void ton() {};
};
msnger.cpp:
#include "msnger.h"
void Msnger::sendOn()
{
emit ton();
}
Msnger应该向我的主窗口发送消息
在mainWindow的构造函数中:
msn = new Msnger();
connect(msn, SIGNAL(ton()),this, SLOT(on()));
其中msn是:
public: Msnger * msn
您能否向我解释是什么原因造成的?如何解决?
最佳答案
您的问题是moc
未在文件上运行,或者其结果未链接。
黄金法则是:
确保所有Q_OBJECT
派生类的定义中都包含QObject
宏。
确保仅在头文件中声明源自QObject
的类。
确保所有头文件都列在HEADERS=
列表中的.pro文件中。
每次将qmake
添加到一个类或修改Q_OBJECT
文件时,都运行.pro
。
附录:
signals:
void ton() {};
不要执行信号。
moc
将为您实现它。关于c++ - Qt对`vtable for Messenger'的 undefined reference ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19742466/