码迷,mamicode.com
首页 > 其他好文 > 详细

Qt学习(一)

时间:2018-11-30 15:32:32      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:prot   字符   学习   功能   slot   无法获得   国际化   关系   cte   

1.

2. 信号槽机制

  • 所谓信号槽,实际就是观察者模式。当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal)。这种发出是没有目的的,类似广播。如果有对象对这个信号感兴趣,它就会使用连接(connect)函数,意思是,用自己的一个函数(成为槽(slot))来处理这个信号。也就是说,当信号发出时,被连接的槽函数会自动被回调。这就类似观察者模式:当发生了感兴趣的事件,某一个操作就会被自动触发。
  • QObject
    • 一个类想要有信号槽功能,必须继承QObject,并且在类定义中使用Q_OBJECT宏,其在宏展开时会为类提供信号槽机制、国际化机制以及 Qt 提供的不基于 C++ RTTI 的反射能力
    • 发送者和接收者都需要是QObject的子类(当然,槽函数是全局函数、Lambda 表达式等无需接收者的时候除外)
  • connect
    • 使用connect的多个重载函数,来定义和建立信号槽关系(谁触发,谁接受,传什么,接受者干什么)
    • 使用QObject::connect()函数连接信号和槽。
  • signals
    • 使用 signals 标记信号函数,信号是一个函数声明,返回 void,不需要实现函数代码;
    • 类中的signals块所列出的,就是该类的信号。信号就是一个个的函数名,返回值是 void(因为无法获得信号的返回值,所以也就无需返回任何值),参数是该类需要让外界知道的数据。信号作为函数名,不需要在 cpp 函数中添加任何实现
  • SIGNAL和SLOT宏
    • 多用于connect函数中,将函数转换为字符串参数
    • 多用于Qt4??,因此其只能有字符串参数?
  • emit
    • 是 Qt 对 C++ 的扩展,是一个关键字(其实也是一个宏)。emit 的含义是发出,也就是发出某个信号
    • 使用 emit 在恰当的位置发送信号;
  • 槽函数是普通的成员函数,作为成员函数,会受到 public、private、protected 的影响;

Qt学习(一)

标签:prot   字符   学习   功能   slot   无法获得   国际化   关系   cte   

原文地址:https://www.cnblogs.com/wyp1988/p/10043822.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!