在学习Qt和IOS的过程中,感觉“Qt信号槽机制”与”iOS(MVC)中的Target—Action机制”有许多相似之处,现通过一个相同的程序来探究Qt与ios的实现过程的两个相同之处。
ios中采用的是MVC这种设计模式,这种模式的关系如下所示:
第一点相似之处:
“信号槽机制”中构建元素搭配与Ios"Target-Action"构建有极大的相似之处:
Qt:
一个信号可以与多个槽构成“信号槽";
一个槽可以与多个信号构成“信号槽”;
信号与信号可以构成“信号槽”;
而iOS
一个target可以与多个Action构成“信号槽";
一个Action可以与多个target构成“信号槽”;
target与target可以构成“信号槽”;
第二点:
如果你想实现这样一个效果:点击按钮(Button控件),在屏幕上显示“HelloChen_Yilong”(Label控件),那么在iOS中你要这样添加函数:
UIButton *buttonReceiver; -(void) changeLabel:(sender) { LabelReceiver.text=@"HelloChen_Yilong"; } [buttonSender addTarget:self action:@(changeLabel:) forControlEvent:UIControlEventTouchupInside];
而在Qt中你会这样添加代码:
connet(sender,SIGNAL(signal),receiver,SLOT(slot)); //sender 对应 ButtonLabel,//receiver 对应 LabelReceiver //signal 对应 changeLabel:方法 //slot 对应 UIControlEventTouchupInside
//IOS 方法:[buttonSender addTarget:self action:@(changeLabel:) forControlEvent:UIControlEventTouchupInside]; //对应于Qt的 信号 槽 槽 信号
如果想进一步了解Qt的信号槽机制可以参看文章:点击打开链接