QT信号槽 笔记

信号与槽就是QT中处理计算机外设响应的一种机制

比如敲击键盘、点击鼠标

//

举例:

代码:

cpp 复制代码
connect(ls,SIGNAL(sig_chifanla()),ww,SLOT(slot_quchifan()));
connect(ls,SIGNAL(sig_chifanla()),zl,SLOT(slot_quchifan()));

connect函数 :这是 Qt 中用于建立信号与槽连接的关键函数。它的作用是将一个对象 (发送者)的信号另一个对象 (接收者)的槽函数 关联起来,当发送者的信号被触发时,接收者的槽函数会自动被调用执行相应的操作

补充:

槽函数的写法问题
QT4 时候:

connect(ls,SIGNAL(sig_chifanla()),ww,SLOT(slot_quchifan()));

这样不太好其实

以下区别:
connect(timer,SIGNAL(timeout()),this,SLOT(timeOut()));
connect(timer,&QTimer::timeout,this,&Widget::timeOut);

在编程中,类型安全是指编译器或解释器对程序中使用的数据类型进行检查的一种特性,旨在防止程序中出现类型不匹配的错误。当代码是类型安全的,意味着编译器或解释器会确保操作只在兼容的数据类型上进行,避免因类型不匹配而引发的错误。

使用 SIGNAL 和 SLOT 宏的连接方式,如 connect(timer, SIGNAL(timeout()), this, SLOT(handleTimeout()));,在编译时不进行类型检查,仅在运行时才会检查。这意味着如果出现类型不匹配,程序可能会编译通过,但在运行时会出现错误。

当使用函数指针来连接信号和槽,如 connect(timer, &QTimer::timeout, this, &Widget::timeoutSlot); 时:

编译器会检查信号和槽的参数类型是否匹配。例如,如果 QTimer::timeout 信号没有参数,而 Widget::timeoutSlot 槽函数有参数,编译器将产生错误。

对于有参数的信号和槽,编译器会检查每个参数的类型和顺序是否匹配。例如,如果 QTimer 有一个带有 int 参数的信号 someSignal(int),而你试图将它连接到一个 Widget 的槽函数 someSlot(double),编译器会因为类型不匹配而报错。

QT5:

例如:

//定时器时间到,发出timeout信号
connect(timer, &QTimer::timeout, this, &Widget::timeoutSlot);
类型安全

这种使用函数指针的写法(&QTimer::timeout 和 &Widget::timeoutSlot)是类型安全的。在编译时,编译器会检查信号和槽的参数是否匹配。如果信号和槽的参数类型不匹配,编译器会报错,避免了在运行时出现类型不匹配的错误,提高了代码的可靠性和可维护性

相关推荐
求真求知的糖葫芦12 分钟前
巴伦学习(一)一种新型补偿传输线巴伦论文学习笔记(自用)
笔记·学习·射频工程
feifeigo12320 分钟前
基于EM算法的混合Copula MATLAB实现
开发语言·算法·matlab
LYS_061835 分钟前
RM赛事C型板九轴IMU解算(4)(卡尔曼滤波)
c语言·开发语言·前端·卡尔曼滤波
盛世宏博北京1 小时前
高效环境管控:楼宇机房以太网温湿度精准监测系统方案
开发语言·数据库·php·以太网温湿度变送器
GLDbalala1 小时前
GPU PRO 4 - 5.3 A Pipeline for Authored Structural Damage 笔记
笔记
IT猿手1 小时前
六种智能优化算法(NOA、MA、PSO、GA、ZOA、SWO)求解23个基准测试函数(含参考文献及MATLAB代码)
开发语言·算法·matlab·无人机·无人机路径规划·最新多目标优化算法
gfdhy1 小时前
【C++实战】多态版商品库存管理系统:从设计到实现,吃透面向对象核心
开发语言·数据库·c++·microsoft·毕业设计·毕设
忧郁的橙子.2 小时前
26期_01_Pyhton文件的操作
开发语言·python
余瑜鱼鱼鱼2 小时前
线程和进程的区别和联系
java·开发语言·jvm
三伏5222 小时前
Cortex-M3重启流程——笔记
笔记·cortex-m3