1、信号与槽的效率是非常高的,但是同真正的回调函数比较起来,由于增加了灵活性,因此在速度上还是有所损失。当然这种损失相对来说是比较小的,但是要追求高效率的话,比如实时系统,就要尽可能避免。

2、信号与槽机制与普通函数的调用一样,如果使用不当的话,在程序执行时也可能产生死循环。因此,在定义槽函数时一定要注意避免间接形成无限循环,即在槽中再次发送所接收到的同样信号,防止死循环。

3、如果一个信号与多个槽相联系的话,那么,当这个信号被发射时,与之相关的槽被激活的顺序将是随机的。

4、宏定义不能用在signal和slot的参数中。既然moc工具不扩展#define,因此,在signals和slots中携带的宏就不能正确的工作,因此不带参数是可以的。比如:

  #define a(x) x

  signals:

    void someSignal(a(x))-------------------错的

5、构造函数不能用在signals或者slots声明区域。比如

  class A:public QObject{

    Q_OBJECT

    public slots:

      A(QObject *parent,const char *name);----------不合法

  };

6、函数指针不能作为信号或者槽的参数,但是可以试试绕过这个限制。比如:

  class A:public QObject{

    Q_OBJECT

    public slots:

      void apply(void(*applyFunction)(QList*,void*),char*);----------------不合法

  };

  但是:

  typedef void(*ApplyFunctionType)(QList*,void*);

  class A:public QObject{

    Q_OBJECT

    public slots:

      void apply(applyFunctionType,char*);------------------------------------可以

  };

7、信号与槽的绑定发生在运行时刻,不能有缺省参数。

8、也不能携带模板类参数,即使moc不报错,也可能达不到预期效果(也可以用typedef绕过这个问题)。

9、嵌套类不能位于信号或者槽区域内,也不能有信号或者槽。

10、友元声明不能位于信号或者槽声明区域内。他们应该在普通C++的private,protected,或者public区域内声明。

转载于:https://www.cnblogs.com/JohannaFeng/p/4720459.html

QT信号与槽机制需要注意的问题相关推荐

  1. Qt 信号和槽机制 优点 效率的详解

    一.信号和槽机制 Qt提供了信号和槽机制用于完成界面操作的响应,是完成任意两个Qt对象之间的通信机制. 其中,信号会在某个特定情况或动作下被触发,槽是等同于接收并处理信号的函数. 二..信号和槽机制的 ...

  2. QT信号和槽机制分析

    QObject这个class是QT对象模型的核心,绝大部分的 QT 类都是从这个类继承而来.这个模型的中心特征就是一个叫做信号和槽(signal and slot)的机制来实现对象间的通讯,你可以把一 ...

  3. Qt基础之四:Qt信号与槽机制原理及优缺点

    目录 一.简介 二.信号和槽 三.信号(signals) 四.槽(slots) 五.在Qt中使用第三方的Signals和Slots 信号

  4. c++基础学习之QT 信号和槽机制的底层实现

    Qt 信号槽的实现 - DevBean Tech World Qt 的信号槽和属性系统基于在运行时进行内省的能力,内省意味着,我们可以列出对象的方法和属性列表,并且能够获取有关它们的所有信息,例如其参 ...

  5. Qt信号与槽机制详解1-创建一个带信号和槽的例子

    目录 一.编译一个例子 1.hello.h中的内容 2.hello.cpp的内容 3.main.cpp中的内容 4.tutorial.pro内容 二.moc_hello.cpp文件 1.Q_OBJEC ...

  6. QT信号与槽——观察者模式——回调函数

    QT信号与槽--观察者模式--回调函数 1.QT信号与槽机制 1.1信号本质 信号是由于用户对窗口或控件进行了某些操作,导致窗口或控件产生了某个特定事件,这时候 Qt 对应的窗口类会发出某个信号.比如 ...

  7. QT5开发及实例学习之二信号和槽机制

    文章目录 前言 一.信号与槽机制的连接方式 二.信号与槽机制的优点 三.信号与槽机制的效率 前言 Qt提供了信号和槽机制用于完成界面操作的响应,信号和槽机制是完成任意两个Qt对象之间的通信机制.其中, ...

  8. QT 的信号与槽机制介绍

    QT 是一个跨平台的 C++ GUI 应用构架,它提供了丰富的窗口部件集,具有面向对象.易于扩展.真正的组件编程等特点,更为引人注目的是目前 Linux 上最为流行的 KDE 桌面环境就是建立在 QT ...

  9. qt学习之路3 ---信号与槽机制

    信号和槽机制 1.概述 Qt采用了一种全新的对象和方法的关联与通信机制,称为信号和槽机制.信号和槽机制是独立于标准C++编译器的,在编译之前需要经过Qt的专门预处理工具MOC(Meta Object ...

最新文章

  1. R语言dplyr包使用mutate函数生成新的数据列(不改变原数据列)实战
  2. dockercompose up build fail (node no such file or directory packages.json )
  3. 设置root密码,su与sudo的区别
  4. 蓝宝石rx470显卡bios_AMD又能开核?刷完BIOS后性能白给,这次血赚了
  5. 面板没了_LCD面板疯狂涨价 白菜价的55寸4K电视没了
  6. ajax 赋值return
  7. android 联系数据库
  8. xampp for mac mysql_【XAMPP和Xampp For Mac哪个好用】XAMPP和Xampp For Mac对比-ZOL下载
  9. tomcat下载安装及配置【图文教程】
  10. Windows和ubuntu互传文件
  11. OrCAD DSN文件无故消失解决办法
  12. 电路基础第5版读书笔记(第一章基本概念)
  13. python pdf解密脚本(pikepdf模块)
  14. Android性能优化之使用线程池处理异步任务
  15. 【火星备份软件】多样化备份方式
  16. jcg q8 固件_JCG读者的免费团队管理工具(Giveaway)
  17. Android及IOS微信5,Android版微信5.0今日正式发布 与iOS版略不同
  18. 驻定相位原理在求解频域表达式中的应用
  19. Perl 和 StrawberryPerl 与 ActivePerl 的区别详解
  20. 网络通信时字节序转换原理与网络字节序、大端和小端模式 .

热门文章

  1. 静脉阻塞指标+补充笔记
  2. Flink的Group by window图示(转载)
  3. Flink DDL的java代碼中的DeserializationSchemaFactory與TableSourceFactory報錯解決方案記錄彙總
  4. 图5-5与代码中变量的对应关系
  5. python中threading模块详解
  6. Opengl :公转与自转
  7. win7计算机中丢失mfc120,mfc120.dll 64位
  8. matlab不显示变量,Matlab空间面板SAR模型运行时解释变量显示不全
  9. 【机器学习】逻辑回归小结
  10. 中国人工智能产业发展联盟成立 360任副理事长单位