信號函數或者槽函數有多個重載。
例如:
valueChanged()函數有兩個重載,那麼我們在使用這個信號的時候就需要使用一個函數指針明確的指向其中一個函數。例如:
void (QSpinBox:: *p)(int) = &QSpinBox::valueChanged;
這樣p就明確的指向了參數是int的valueChanged函數。這就不會造成信號槽連接錯誤。
沒有執行qmake
有時候會出現一些未定義,或者引用錯誤。這時候你可能就需要qmake一下。這樣就不會有錯誤了。例如我新建了一個類,這個類沒有繼承自這些類。即使你加上了Q_OBJECT宏。你在編譯的時候仍會遇到error: undefined reference to `vtable for xxxx'。這個時候你就需要手動qmake一下。右鍵你的項目,執行qmake。
把宏Q_OBJECT寫在了CPP文件中
Qt的moc會自動處理包含Q_OBJECT的頭文件,並且只處理頭文件。因此你把Q_OBJECT寫在了CPP文件之中。可能就會遇到這樣一個錯誤:“找到一個或多個多重定義的符號”。在Qt中,也不應該把使用了Qt提供的庫的類的函數實現放在頭文件中。這樣由於moc的處理也會引起錯誤。