2012-06-23 20 views
2

所以基本上,我正在寫一個Qt應用程序。它曾經工作正常,但自從我重新配置了一些文件名以來(具體來說,很久以前,我有一個名爲mainwindow.h和.cpp的文件,我分別將它們重命名爲net.h和.cpp,最近更改了它們回到mainwindow.h和.cpp)時,出現幾個錯誤(在運行時):如何清空Qt中的緩存QMake:沒有這樣的插槽,重複的錯誤

Object::connect: No such slot QWidget::slotName() 
Object::disconnect: No such signal QWidget::iconSizeChanged(QSize) 
Object::disconnect: No such signal QWidget::toolButtonStyleChanged(Qt::ToolButtonStyle) 
Object::connect: No such signal QWidget::iconSizeChanged(QSize) 
Object::connect: No such signal QWidget::toolButtonStyleChanged(Qt::ToolButtonStyle) 

我有我的類中註冊的唯一的插槽是第一位的,插槽名。我不確定它爲什麼被列爲QWidget的成員,而不是我的類(QWidget的子類)。我知道我宣佈它是正確的,因爲我發現它在moc_mainwindow.cpp文件中。是的,我的類定義中有Q_OBJECT。

另一個也會發生錯誤,每秒一次,同時運行:

QWidget::metric: Invalid metric command 
QPainter::begin: Paint device returned engine == 0, type: 143256176 

就像我說的,這一切都用來很好地工作,這就是爲什麼我沒有要發佈的代碼巨大的牆壁,除非問。我認爲這是QMake的更多緩存問題。我嘗試刪除所有moc文件,刪除項目文件,清空項目文件並生成一個新的空的Makefile等。任何人有任何想法?

+0

由於您更改了文件名,您是否更改了另一個文件中的#include「ui_filename.h」行*而不是將其更改回來?在黑暗中純粹的射擊,我沒有看到任何其他明顯的錯誤。 – tmpearce

+0

一切都正確更改。就像我說的,它編譯好,只是運行時錯誤。 – chameco

+3

前段時間我有類似的問題。我只需要刪除每個編譯的文件,只留下.cpp(moc _ *。cpp也被刪除),.h,.pro和我需要的任何其他資源(如圖像)。這樣,我強迫qmake應用程序重新創建Makefile。另外,我也刪除了.pro.user,但我認爲沒有必要。 –

回答

2

您不應該在沒有版本控制的情況下開發代碼。利用您的版本控制系統來清理您的工作副本,或檢查到新的位置並重新編譯。那麼你不會責怪誰知道什麼。

在沒有版本控制的情況下,手動將文件複製到新位置,將其提交到您選擇的新版本控制存儲庫(本地文件)並在那裏編譯。

請注意,Qt Creator默認爲陰影構建 - 即構建不在您的源文件夾內。清除陰影版本很簡單:將一個目錄放在源文件夾上方,然後從項目名稱開始尋找名稱較長的文件夾。擦拭,你保證沒有任何「緩存」。

另請注意,QMake根本沒有緩存。它重新讀取其輸入(.pro及其包含)中給出的所有文件,並重新創建所有Makefile。您可以運行qmake && make clean進行清理,但這不會處理來自不同配置項目的文件。唉,這樣的文件不應該干涉。

相關問題