当前位置: 首页 > article >正文

QT信号槽 笔记

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

比如敲击键盘、点击鼠标

在这里插入图片描述
//

举例:
在这里插入图片描述

代码:

在这里插入图片描述在这里插入图片描述

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)是类型安全的。在编译时,编译器会检查信号和槽的参数是否匹配。如果信号和槽的参数类型不匹配,编译器会报错,避免了在运行时出现类型不匹配的错误,提高了代码的可靠性和可维护性


http://www.kler.cn/a/508759.html

相关文章:

  • 代码随想录算法训练营第三十五天-动态规划-01背包(二维)
  • 对话 TDengine 解决方案中心总经理陈肃:构建技术与市场的桥梁
  • Redis超详细入门教程(基础篇)
  • 复用类(4):final关键字、初始化与类的加载
  • ASP.NET Core WebApi接口IP限流实践技术指南
  • 如何在vue中渲染markdown内容?
  • Apache Web服务器技术指南 - 基于Kylin麒麟操作系统
  • 【1】认识思科无线控制器
  • WebSocket——推送方案选型
  • Windows 11开发深度实践:从零开始构建一个功能丰富的UWP应用
  • JavaWeb 前端基础 html + CSS 快速入门 | 018
  • kafka集群安装Raft 协议
  • 《AI语言模型的关键技术探析:系统提示、评估方法与提示工程》
  • python 利用pandas实现从CSV导出并格式化后写入.jsonl文件
  • Redis Cluster 集群
  • 【Javascript Day8】计算机存储方式、方法定义方式、作用域、预解析、对象
  • linux手动安装mysql5.7
  • 浅谈安科瑞电能质量监测和治理产品在分布式光伏电站的应用-安科瑞 蒋静
  • element-ui制作多颜色选择器
  • Vue3响应式原理: Proxy实现解析
  • BERT详解
  • linux解压命令(可整理到CSDN)
  • 【gin】模型绑定、参数验证及文件上传go案例演示
  • w163美食推荐商城
  • unity2022以上导出到AndroidStudio后更新步骤
  • 智能学习环境(Intelligent Learning Environment,ILE)