信号槽机制

国外一篇关于信号槽的文章“ A deeper look at signals and slots” ,分析的很好,值得一看。原文地址:

http://www.elpauer.org/?p=255

pdf 文件: http://www.elpauer.org/stuff/a_deeper_look_at_signals_and_slots.pdf

另外,在豆子空间  http://devbean.blog.51cto.com   有中文翻译,共 4 篇文章


深入理解信号槽(一)  http://devbean.blog.51cto.com/448512/417658

深入理解信号槽(二)  http://devbean.blog.51cto.com/448512/424778

深入理解信号槽(三)  http://devbean.blog.51cto.com/448512/426999

深入理解信号槽(四)  http://devbean.blog.51cto.com/448512/428364


摘录关键性总结:

    信号和槽的机制实际上是观察者模式的一种变形。它是面向组件编程的一种很强大的工具。现在,信号槽机制已经成为计算机科学的一种术语,也有很多种不同的实现。

     Qt 信号槽是 Qt 整个架构的基础之一,因此它同 Qt 提供的组件、线程、反射机制、脚本、元对象机制以及可视化 IDE 等等紧密地集成在一起。 Qt 的信号是对象的成员函数,所以,只有拥有信号的对象才能发出信号。 Qt 的组件和连接可以由非代码形式的资源文件给出,并且能够在运行时动态建立这种连接。 Qt 的信号槽实现建立在 Qt 元对象机制之上。 Qt 元对象机制由 Qt 提供的 moc 工具实现。 moc 也就是元对象编译器,它能够将用户指定的具有 Q_OBJECT 宏的类进行一定程度的预处理,给这个增加元对象能力。

     Boost.Signals 是具有静态的类型安全检查的,基于模板的信号槽系统的实现。所有的信号都是模板类 boost::signal 的一个特化;所有的槽函数都具有相匹配的可调用的签名。 Boost.Signals 是独立的,不需要内省、元对象系统,或者其他外部工具的支持。然而, Boost.Signals 没有从资源文件动态建立连接的能力。

    这两种实现都非常漂亮,并且都具有工业强度。将它们结合在一起使用也不是不可能的,Qt 4.1 即提供了这种可能性。

    任何基于 Qt GUI 的系统都会自然而然的使用信号槽。你可以从中获取很大的好处。任何大型的系统,如果希望能够降低组件之间的耦合程度,都应该借鉴这种思想。正如其他的机制和技术一样,最重要的是把握一个度。在正确的地方使用信号槽,可以让你的系统更易于理解、更灵活、高度可重用,并且你的工作也会完成得更快。


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值