2013-05-21 24 views
0

在寫一個Qt4的應用程序,我笨拙地寫道:如何讓編譯器檢查給SIGNAL()什麼?

QObject::connect(spinbox, SIGNAL(vlaueChanged(int)), .... 

,它編譯,它跑了,但當然紡紗器沒有任何影響。

應該抓住這樣的拼寫錯誤。我總是認爲valueChanged()是在某個頭文件中聲明的,但顯然不是。任何垃圾都可以傳給SIGNAL()或SLOT(),然後編譯。我的玩具程序很小。對於動態創建的控件實時連接的巨大應用程序,這樣的錯誤可能很難追查到。

有沒有辦法對這種錯字進行錯誤檢查?編譯器(gcc)可以這樣做,還是其他適合的工具?

+1

如果您閱讀應用程序輸出,那麼追蹤並不是很難。 – 2013-05-21 07:33:55

回答

0

SIGNALSLOT宏將它們的參數轉換爲字符串,並且它們在編譯時不檢查(因爲它們實際上是字符串)。如果信號/插槽名稱錯誤Qt在運行時寫入警告(qWarn)。他們說,在Qt5中有些東西改變了。

根據我的經驗,有時你真的可以做這樣的錯誤(儘管很少,自動完成有很多幫助),但它可以很容易地追蹤和修復。

1

這已經改變爲Qt5。你可以閱讀有關它here

相關問題