我從QObject繼承了一個類:
#ifndef MAINWINDOWPRIVATE_H
#define MAINWINDOWPRIVATE_H
#include "DockManager.h"
class MainWindowPrivate : public QObject
{
Q_OBJECT
public:
MainWindowPrivate();
virtual ~MainWindowPrivate();
public:
void initDockWidget(QWidget *widget);
private:
ads::CDockManager *DockManager;
};
#endif // MAINWINDOWPRIVATE_H
編譯,出錯,提示:
mainwindowprivate.obj:-1: error: LNK2001: 無法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl MainWindowPrivate::metaObject(void)const " (?metaObject@MainWindowPrivate@@UEBAPEBUQMetaObject@@XZ)
解決辦法:
編譯出錯是因為沒有生成moc_mainwindowprivate.cpp檔案造成的。
如果新添加QObject派生類到您的項目,則必須再次運作qmake,即
1、清理項目(非必須)
2、運作qmake(必須)
3、建構項目(必須)
否則,如果在QObject繼承的類上進行增量建構,那麼您将擁有過時的moc檔案,或者幹脆沒有moc檔案。