[QT - C++桌面應(yīng)用開(kāi)發(fā)]我眼中的大小S:Signal和Slot


常見(jiàn)GUI

在常見(jiàn)的GUI程序桌面、移動(dòng)端開(kāi)發(fā)中,以我現(xiàn)階段接觸過(guò)的iOS移動(dòng)MacOS桌面開(kāi)發(fā)中,UI控件與事件的調(diào)用是Callback形式;

這種狀態(tài)下,只能以1對(duì)1的形式調(diào)用,并且無(wú)參數(shù)確認(rèn)機(jī)制,這種形式屬于比較傳統(tǒng)的UI->Event模式;

例如
/** 例1
 * 直接綁定storyboard
 * stopBtnClick
 */
- (IBAction)stopBtnClick:(id)sender {
    NSLog(@" %s:%d ", __func__, __LINE__);
    [self overAnalyzingWith:1];
}

/** 例2
 * 通過(guò)UIButton 綁定action selector
 */
[self.view.testBtn 
          addTarget:self 
          action:@selector(testBtnClick:) 
          forControlEvents:UIControlEventTouchUpInside
];

但是最近剛學(xué)的QT - C++開(kāi)發(fā)和這個(gè)在設(shè)計(jì)思想上還是有所不同的。

QT

QT中GUI程序的widget響應(yīng)事件中,是通過(guò)SignalSlot形式去進(jìn)行對(duì)象的事件響應(yīng),
比如,在QT的ui->pushButton中,signals會(huì)用clicked(),之后通過(guò)調(diào)用對(duì)象的slots函數(shù)最終完成Button的點(diǎn)擊行為。

Signal -> Slot 是可以 1對(duì)N、N對(duì)1的形式調(diào)用。

例如:
/* 
 *在UI Window里面點(diǎn)擊testButton 
 */
connect(ui->testButton, SIGNAL(clicked()),    this,   SLOT(testBtnClick()));

參考:https://doc.qt.io/qt-5/signalsandslots.html


剩下我總結(jié)到筆記上:

如圖:

筆記
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容