西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索

首页编程开发其它知识 → 什么是信号槽?深入理解信号槽

什么是信号槽?深入理解信号槽

相关软件相关文章发表评论 来源:豆子空间时间:2010/11/19 11:47:50字体大小:A-A+

作者:FinderCheng点击:480次评论:0次标签: 信号槽 Qt信号 Boost

  • 类型:游戏其他大小:6.6M语言:多国语言[中文] 评分:3.7
  • 标签:
立即下载
3 页 两个不同的术语以及各自的动作:信号和槽

两个不同的术语以及各自的动作:信号和槽;
在一个地方(信号)可以连接零个或者多个回调函数(槽),同时也是多对多的;
焦点在于连接本身,而不是提供者或者消费者;
不需要手工为了一个连接创建新的类;
连接仍旧是类型安全的。
这五点是信号槽系统的核心,Qt 和 boost 都拥有这些特性。下面则是二者的不同之处:

Boost.Signals
Qt Signals 和 Slots

一个信号就是一个对象 信号是具有名字的成员函数的签名
发出信号类似于函数调用 发出信号类似于函数调用,Qt 提供了一个 emit 关键字来完成这个操作
信号可以是全局的、局部的或者是成员对象 信号只能是成员函数
任何能够访问到信号对象的代码都可以发出信号 只有信号的拥有者才能发出信号
槽是任何可被调用的函数或者函数对象 槽是经过特别设计的成员函数
可以有返回值,返回值可以在多个槽中使用 没有返回值
同步的 同步的或者队列的
非线程安全 线程安全,可以跨线程使用
当且仅当槽是可追踪的时候,槽被销毁时,连接自动断开 槽被销毁时,连接都会自动断开(因为所有槽都是可追踪的)
类型安全(编译器检查) 类型安全(运行期检查)
参数列表必须完全一致 槽可以忽略信号中多余的参数
信号、槽可以是模板 信号、槽不能是模板
C++ 直接实现 通过由 moc 生成的元对象实现(moc 以及元对象系统都是 C++ 直接实现的)
没有内省机制 可以通过内省发现
可以通过元对象调用
连接可以从资源文件中自动推断出

最重要的是,Qt 的信号槽机制已经深深地植入到框架之中,成为不可分割的一部分。它们可以使用 Qt 专门的开发工具,例如 QtCreator,通过拖拽的方式很轻松的创建、删除、修改。它们甚至可以通过动态加载资源文件,由特定命名的对象自动动态生成。这些都是 boost 作为一个通用库所不可能提供的。

本文导航

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)