看別人代碼看到void on_MyWidget_slotTest();
就郁悶了,沒看到他代碼里有connect 卻能把信號和槽可以連接起來。
今日回顧書本發現該函所的nb之處。
QMetaObject::connectSlotsByName(QObject * object)將遞歸的搜尋傳入的Qt對象object的所有子對象,並把所有匹配的子對象的信號關聯到object對象的符合下列規則的槽函數void on_<窗口部件名稱>_<信號名稱>(<信號參數>)
如果窗口部件已經提供信號Qt可以自動關聯。
- //申明
- class MyClass
- {
- public slots:
- void on_myPushButton_clicked();
- };
- //實現
- void MyClass::on_myPushButton_clicked()
- {
- }
這樣子就會自動關聯。。真是慚愧,看書不細。
參考:http://blog.csdn.net/kfbyj/article/details/8878969
---------------------------------------------------------------------------------
怪不得UI生成的函數名稱都是 void MainWindow::on_pushButton_6_clicked()都不需要connect(按鈕的名稱是pushButton_6),原來是自動連接了,我原來還納悶並專門發帖問過,也沒有人明確給出答案。。。
但是這里也有一個問題,如果這個信號需要多個參數怎么辦?這個connectSlotsByName只能傳一個參數,或者不傳參數。。。