qt信号与槽连接的书写规范
环境 : vs2015 + qt 5.9.9
Qt信号和槽连接失败原因主要有以下几点:
1.槽函数并没有声明在类的public slots(或private slots或protected slots)里,因此,所想要成为槽函数的那个函数只是普普通通成员函数。
2.信号和槽之间存在参数传递,但是二者的参数数量或者类型不一致(信号里的参数数量可以多于槽函数里的参数数量,但是二者都有的参数,类型必须对应);
3.信号和槽之间有参数传递,但是使用connect的时候在槽函数或者信号或者二者同时加入了形参,比如下面的两个connect,第一个连接因为有形参,不会连接成功。第二个会连接成功。
// connect 1
connect(sender, SIGNAL(sendMessage(int a)), receiver, SLOT(getMessage(int b)));
// connect 2
connect(sender, SIGNAL(sendMessage(int)), receiver, SLOT(getMessage(int)));
4.信号和槽之间存在自定义参数传递,但是传递的类型没有注册。什么叫做自定义参数呢?在传递int,double,char,bool,float等类型的时候没问题,但是传递比如QList类,或者自定义的结构体、类等时,连接将会失败。
5:connect函数书写不规范,以下2种方式是对的.
a) 含参数的信号与槽
connect(this, SIGNAL(CamEvent_Sig(EEVENT_CODE)), m_pCameraObj, SLOT(CamEvent_Slot(EEVENT_CODE)), Qt::ConnectionType::UniqueConnection);
不要随意的使用类名::函数名、->、.等,不要随意多写或者少写()
a) 不含参数的信号与槽
connect(this, SIGNAL(test_Sig()), this, SLOT(test_Slot()), Qt::ConnectionType::UniqueConnection);
不要随意的使用类名::函数名、->、.等,不要随意多或者少()
qt信号与槽连接的书写规范相关推荐
- shared_ptr 和 make_shared 的使用(以及qt信号和槽连接)
std::shared_ptr 是一种智能指针(本身就是一个对象,一个对象,一个对象,不是原始指针,重要的事情说三遍),指向一个对象.它能够记录多少个 shared_ptr 共同指向一个对象,从而消除 ...
- Qt信号和槽连接方式的选择
看了下Qt的帮助文档,发现connect函数最后还有一个缺省参数. connect函数原型是这样的: QMetaObject::Connection QObject::connect(const QO ...
- Qt信号和槽函数连接不成功原因
Qt信号和槽连接失败原因主要有以下几点: 1.槽函数并没有声明在类的public slots(或private slots或protected slots)里,因此,所想要成为槽函数的那个函数只是普普 ...
- Qt信号与槽的五种连接方式
qt信号与槽的五种连接方式: 1.默认连接:如果是在同一线程等价于直连,在不同线程等价于队列连接 2.直连:信号在哪,在哪个线程执行(最好只在同一线程中用) 3.队列连接: 槽在哪就在哪个线程执行 ( ...
- Qt 信号和槽 事件处理
一:Qt信号和槽概述 信号与槽作为QT的核心机制在QT编程中有着广泛的应用,本章介绍了信号与槽的一些基本概念.元对象工具以及在实际使用过程中应注意的一些问题. 信号和槽机制是QT的核心机制,要精通QT ...
- 【Qt】Qt信号与槽使用不当,使程序崩溃
问题描述 跨线程使用Qt信号和槽,信号发送时间间隔小于槽函数处理时间时,造成程序崩溃. 原因分析 跨线程使用Qt信号和槽时,connect默认是QueuedConnection,队列连接方式. 信号传 ...
- QT信号与槽——观察者模式——回调函数
QT信号与槽--观察者模式--回调函数 1.QT信号与槽机制 1.1信号本质 信号是由于用户对窗口或控件进行了某些操作,导致窗口或控件产生了某个特定事件,这时候 Qt 对应的窗口类会发出某个信号.比如 ...
- Qt信号与槽传递自定义数据类型——两种解决方法
Qt信号与槽传递自定义数据类型--两种解决方法 参考文章: (1)Qt信号与槽传递自定义数据类型--两种解决方法 (2)https://www.cnblogs.com/tid-think/p/9300 ...
- QT 信号与槽 最简单例子
QT 信号与槽 最简单例子 main.cpp 和 my_head.h源码: [cpp] view plaincopy #ifndef MY_HEAD_H #define MY_HEAD_H #inc ...
最新文章
- spring控制事务:声明式事务(注解)
- [机器学习] PMML实现模型上线
- 计算机网络上网时间,电脑怎么限制上网时间
- 辅助的写与数据库交互的XML文件的类
- 使用wireshark抓包,本地环回测试通信数据已经通过SM4国密算法加密
- x3850x5启动代码c2_代码小时x 2,080
- python全屏模式 spider_我可以使用PIL以全屏模式显示图像吗?
- 翻译:使用 AWS Deep Racer 的日志分析工具
- html表格列文字自动换行,Table文字自动换行
- 计算机软件自启动设置,设置开机启动项,详细教您电脑如何设置开机启动项
- JAVA藏宝阁游戏交易系统计算机毕业设计Mybatis+系统+数据库+调试部署
- 2022CCPC网络预选赛c题Problem C. Guess
- [Swust OJ 643]--行列式的计算(上三角行列式变换)
- R语言学习笔记之str函数
- java导出的excel数字过长_用POI导出excel时,较长的数字不想被自动变为科学计数法的解决方式(转)...
- 以太坊(Ethereum) - 网络节点
- 2019华为新年贺词
- 数据库的并运算和差运算
- Python输出绝对值
- 计算机网络专业规划建设,计算机网络工程专业建设