QT

[QT - C++桌面应用开发]我眼中的大小S:Signal和S

2020-02-01  本文已影响0人  _小老虎_

常见GUI

在常见的GUI程序桌面、移动端开发中,以我现阶段接触过的iOS移动MacOS桌面开发中,UI控件与事件的调用是Callback形式;

这种状态下,只能以1对1的形式调用,并且无参数确认机制,这种形式属于比较传统的UI->Event模式;

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

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

但是最近刚学的QT - C++开发和这个在设计思想上还是有所不同的。

QT

QT中GUI程序的widget响应事件中,是通过SignalSlot形式去进行对象的事件响应,
比如,在QT的ui->pushButton中,signals会用clicked(),之后通过调用对象的slots函数最终完成Button的点击行为。

Signal -> Slot 是可以 1对N、N对1的形式调用。

例如:
/* 
 *在UI Window里面点击testButton 
 */
connect(ui->testButton, SIGNAL(clicked()),    this,   SLOT(testBtnClick()));

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


剩下我总结到笔记上:

如图:

笔记
上一篇下一篇

猜你喜欢

热点阅读