新浪微博 有道云笔记 麦库 EverNote Pocket Instapaper 更多

从“Qt信号槽机制”到”iOS(MVC)中的Target——Action机制”


在学习Qt和IOS的过程中,感觉“Qt信号槽机制”与”iOS(MVC)中的Target—Action机制”有许多相似之处,现通过一个相同的程序来探究Qt与ios的实现过程的两个相同之处。

ios中采用的是MVC这种设计模式,这种模式的关系如下所示:



第一点相似之处 






信号槽机制中构建元素搭配与Ios"Target-Action"构建有极大的相似之处:

Qt

一个信号可以与多个槽构成信号槽";

一个槽可以与多个信号构成信号槽 

信号与信号可以构成信号槽

iOS

一个target可以与多个Action构成信号槽"; 

一个Action可以与多个target构成信号槽 

targettarget可以构成信号槽   



第二点:

如果你想实现这样一个效果:点击按钮(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的信号槽机制可以参看文章:点击打开链接




posted @ 2012-11-10 16:05  iTeaTime(技术清谈)  阅读(607)  评论(0编辑  收藏  举报