Qt中信號存在重載情況下的選擇

以QComboBox中的currentIndexChanged信號爲例:

在Qt4中由於填寫信號時,需要填寫參數,所以不存在此問題。以下解決方法爲在Qt5中遇到使的解決方案。

解決方法1:connect(&object1, (void (QComboBox::*)(int))&QComboBox::currentIndexChanged, &object2, &Slot);

解決方法2:connect(&object1, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged, &object2, &Slot);

第一個使用的是 C 風格的強制類型轉換。此時,如果你改變了信號的類型,那麼你就會有一個潛在的運行時錯誤。例如,如果我們把(const QString &, const QDate &)兩個參數修改成(const QDate &, const QString &),C 風格的強制類型轉換就會失敗,並且這個錯誤只能在運行時發現。而第二種則是 C++ 推薦的風格,當參數類型改變時,編譯器會檢測到這個錯誤。

參考自豆子的文章
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章