常見(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ò)Signal和Slot形式去進(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é)到筆記上:
如圖:
筆記
