QT connectSlotsByName不用connent就會觸發槽函數

工作中沒有小事:點石成金,滴水成河,只有認真對待自己所做的一切事情,才能克服萬難,取得成功。

轉載:https://blog.csdn.net/hellokandy/article/details/105100563

在項目開發中,一點開發經驗總結。

使用VS的QT助手生成測試工程的時候,在自動生成的ui_XXXXXX.h中,在setupUi函數的最後 QMetaObject::connectSlotsByName(XXXXX);有這樣一句話,平時沒怎麼留意過,在此記錄一下

查看幫助文檔

 

 

 

大概意思是:

遞歸搜索給定對象的所有子對象,並將來自這些子對象的匹配信號連接到以下形式的對象插槽:

void on_<object name>_<signal name>(<signal parameters>);

 

假設有一個類型爲QPushButton的對象,對象ObjectName爲button1,捕捉按鈕的clicked()信號的槽是:

void on_button1_clicked();

就可以不用寫connect函數來連接信號和槽,自動會觸發槽函數。

具體步驟:

1. QPushButton* pBtn =new QPushButton();
   pBtn->setObjectName(QStringLiteral("button1"));

2.protected Q_SLOTS:
    void on_button1_clicked();

3.QMetaObject::connectSlotsByName(QPushButton);

 

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