2014-07-17 102 views
1

我可能會丟失一些明顯的東西,但我無法擺脫我的Qt用戶界面中的鏈接錯誤。LNK2019構造函數與QGraphicsView子類

我已經隔離了導致問題的部分。基本上,我正在實現一個QGraphicsView的子類來顯示交互式開銷圖。出於某種原因,我無法讓構造函數得到解決。

OverheadMap.h:

#ifndef OVERHEADMAP_H 
#define OVERHEADMAP_H 

#include <QGraphicsView> 

class OverheadMap : public QGraphicsView { 
    Q_OBJECT 

public: 
    OverheadMap(); 
}; 

#endif // OVERHEADMAP_H 

OverheadMap.cpp:

#include "OverheadMap.h" 

OverheadMap::OverheadMap() { 
    // Body 
} 

main.cpp中:

#include "OverheadMap.h" 

int main(int argc, char *argv[]) 
{ 
    OverheadMap *map = new OverheadMap(); 
} 

LNK2019:

main.obj:-1: error: LNK2019: unresolved external symbol "public: __thiscall OverheadMap::OverheadMap(void)" ([email protected]@[email protected]) referenced in function _main 

我可以沒有任何麻煩地使用QtCreator的OverheadMap自動完成,並且我已經完成了一個類似的工作的QFrame的子類實現,所以我懷疑這裏有一個語法錯誤。

我錯過了什麼?

謝謝。

+0

而文件'OverheadMap.cpp'是否在你的項目中並正在構建? –

+0

確保你已經爲你的項目重新生成了Qt生成的文件。任何新類都不會理解像Q_OBJECT這樣的Qt語法,除非它們擁有自己的文件。 – Lochemage

+0

''OverheadMap.cpp'在源文件夾中就像我創建的每個.cpp文件一樣,並且我嘗試了至少10次清理/重建。我甚至嘗試關閉/重新打開QtCreator。 –

回答

0

此代碼工作對我蠻好。

所以,解決的辦法是你必須重新運行qmake,因爲根據你的意見,你修改了項目結構而不告訴qmake。

0

你需要調用基類的構造函數

OverheadMap::OverheadMap() : QGraphicsView() 
{ 
    // Body 
} 
+0

我仍然有同樣的問題。 –

+1

這個答案是錯誤的。如果它是一個空列表,則不需要。 – lpapp