有一类
class LoaderToTextEdit : public QObject, public ILoader {
Q_OBJECT
public:
explicit LoaderToTextEdit(QTextEdit & ATextEdit, QObject *parent = Q_NULLPTR);
LoaderToTextEdit(const LoaderToTextEdit & ALogger);
const LoaderToTextEdit & operator =(const LoaderToTextEdit & ALogger);
virtual ~LoaderToTextEdit();
virtual void sendMessage(ILoader::MessageType AMesgType,const QString & AMessage);
private slots:
void onTimer();
private:
QMutex * FMutex;
QTextEdit * FTextEdit;
QQueue<QString> * FLoggerQueue;
QTimer * FLoggerTimer;
void initTimer();
};
cpp中有构造函数和析构函数的实现。编译错误:
对“LoaderToTextEdit 的 vtable”的未定义引用
关于构造函数和析构函数。
帮助我理解!
这个问题有两个可能的根源:
1) 一些声明为槽的函数没有实现。在 Qt 中,槽必须有一个实现。
2) 没有moc文件是因为添加宏后qmake没有生效
Q_OBJECT
在第一种情况下,我们寻找哪些插槽没有实现并添加它(因为它们在注释中正确写入,您还必须检查构造函数和析构函数)
第二种情况,手动运行qmake(在QtCreator中菜单Build - Run qmake)并重建工程