QT信号与槽机制需要注意的问题
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信号与槽机制需要注意的问题相关推荐
- Qt 信号和槽机制 优点 效率的详解
一.信号和槽机制 Qt提供了信号和槽机制用于完成界面操作的响应,是完成任意两个Qt对象之间的通信机制. 其中,信号会在某个特定情况或动作下被触发,槽是等同于接收并处理信号的函数. 二..信号和槽机制的 ...
- QT信号和槽机制分析
QObject这个class是QT对象模型的核心,绝大部分的 QT 类都是从这个类继承而来.这个模型的中心特征就是一个叫做信号和槽(signal and slot)的机制来实现对象间的通讯,你可以把一 ...
- Qt基础之四:Qt信号与槽机制原理及优缺点
目录 一.简介 二.信号和槽 三.信号(signals) 四.槽(slots) 五.在Qt中使用第三方的Signals和Slots 信号
- c++基础学习之QT 信号和槽机制的底层实现
Qt 信号槽的实现 - DevBean Tech World Qt 的信号槽和属性系统基于在运行时进行内省的能力,内省意味着,我们可以列出对象的方法和属性列表,并且能够获取有关它们的所有信息,例如其参 ...
- Qt信号与槽机制详解1-创建一个带信号和槽的例子
目录 一.编译一个例子 1.hello.h中的内容 2.hello.cpp的内容 3.main.cpp中的内容 4.tutorial.pro内容 二.moc_hello.cpp文件 1.Q_OBJEC ...
- QT信号与槽——观察者模式——回调函数
QT信号与槽--观察者模式--回调函数 1.QT信号与槽机制 1.1信号本质 信号是由于用户对窗口或控件进行了某些操作,导致窗口或控件产生了某个特定事件,这时候 Qt 对应的窗口类会发出某个信号.比如 ...
- QT5开发及实例学习之二信号和槽机制
文章目录 前言 一.信号与槽机制的连接方式 二.信号与槽机制的优点 三.信号与槽机制的效率 前言 Qt提供了信号和槽机制用于完成界面操作的响应,信号和槽机制是完成任意两个Qt对象之间的通信机制.其中, ...
- QT 的信号与槽机制介绍
QT 是一个跨平台的 C++ GUI 应用构架,它提供了丰富的窗口部件集,具有面向对象.易于扩展.真正的组件编程等特点,更为引人注目的是目前 Linux 上最为流行的 KDE 桌面环境就是建立在 QT ...
- qt学习之路3 ---信号与槽机制
信号和槽机制 1.概述 Qt采用了一种全新的对象和方法的关联与通信机制,称为信号和槽机制.信号和槽机制是独立于标准C++编译器的,在编译之前需要经过Qt的专门预处理工具MOC(Meta Object ...
最新文章
- R语言dplyr包使用mutate函数生成新的数据列(不改变原数据列)实战
- dockercompose up build fail (node no such file or directory packages.json )
- 设置root密码,su与sudo的区别
- 蓝宝石rx470显卡bios_AMD又能开核?刷完BIOS后性能白给,这次血赚了
- 面板没了_LCD面板疯狂涨价 白菜价的55寸4K电视没了
- ajax 赋值return
- android 联系数据库
- xampp for mac mysql_【XAMPP和Xampp For Mac哪个好用】XAMPP和Xampp For Mac对比-ZOL下载
- tomcat下载安装及配置【图文教程】
- Windows和ubuntu互传文件
- OrCAD DSN文件无故消失解决办法
- 电路基础第5版读书笔记(第一章基本概念)
- python pdf解密脚本(pikepdf模块)
- Android性能优化之使用线程池处理异步任务
- 【火星备份软件】多样化备份方式
- jcg q8 固件_JCG读者的免费团队管理工具(Giveaway)
- Android及IOS微信5,Android版微信5.0今日正式发布 与iOS版略不同
- 驻定相位原理在求解频域表达式中的应用
- Perl 和 StrawberryPerl 与 ActivePerl 的区别详解
- 网络通信时字节序转换原理与网络字节序、大端和小端模式 .
热门文章
- 静脉阻塞指标+补充笔记
- Flink的Group by window图示(转载)
- Flink DDL的java代碼中的DeserializationSchemaFactory與TableSourceFactory報錯解決方案記錄彙總
- 图5-5与代码中变量的对应关系
- python中threading模块详解
- Opengl :公转与自转
- win7计算机中丢失mfc120,mfc120.dll 64位
- matlab不显示变量,Matlab空间面板SAR模型运行时解释变量显示不全
- 【机器学习】逻辑回归小结
- 中国人工智能产业发展联盟成立 360任副理事长单位