Qt 靜態函數QMetaObject::connectSlotsByName(QObject * object)按命名規則自動connect,不需要手動connect


看別人代碼看到void on_MyWidget_slotTest();

就郁悶了,沒看到他代碼里有connect 卻能把信號和槽可以連接起來。

今日回顧書本發現該函所的nb之處。

QMetaObject::connectSlotsByName(QObject * object)將遞歸的搜尋傳入的Qt對象object的所有子對象,並把所有匹配的子對象的信號關聯到object對象的符合下列規則的槽函數void on_<窗口部件名稱>_<信號名稱>(<信號參數>)

如果窗口部件已經提供信號Qt可以自動關聯。

        

[cpp]  view plain copy print ?
 
  1. //申明  
  2. class MyClass   
  3. {  
  4. public slots:  
  5.     void on_myPushButton_clicked();  
  6. };  
  7. //實現  
  8. void MyClass::on_myPushButton_clicked()  
  9. {  
  10.   
  11. }  

這樣子就會自動關聯。。真是慚愧,看書不細。

參考:http://blog.csdn.net/kfbyj/article/details/8878969

---------------------------------------------------------------------------------

怪不得UI生成的函數名稱都是 void MainWindow::on_pushButton_6_clicked()都不需要connect(按鈕的名稱是pushButton_6),原來是自動連接了,我原來還納悶並專門發帖問過,也沒有人明確給出答案。。。

但是這里也有一個問題,如果這個信號需要多個參數怎么辦?這個connectSlotsByName只能傳一個參數,或者不傳參數。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM