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

Qt 信号与槽

目录

Qt信号和槽

connect函数

connect使用方法

自定义信号 与 自定义槽

Qt界面化工具自动生成的槽

自定义信号

带参数的信号和槽

信号与槽的断开


Qt信号和槽

谈到信号,设计3个要素

信号源:谁发出了信号

信号触发条件:哪个控件的哪个函数被调用了,用户进行了不同的操作,会触发不同的操作

信号处理方式:需要哪个控件的哪个函数进行处理

信号处理方式也可以被称为:槽(slot) 即处理函数 也可称为槽函数

Qt可以利用connet 将信号和槽关联起来

connect函数

是QObject提供的静态成员函数

QObject是所有控件的祖宗

connect使用方法

对Button进行点击,Widget就会关闭

信号函数和槽函数的图标区别

传入的是函数指针,为什么const char*能接受?

const char*是之前的写法,现在使用了宏替代

Qt5 开始,对connect使用了泛型编程,不需要进行转换,所以就有了现在的写法。

自定义信号 与 自定义槽

Qt界面化工具自动生成的槽

在连接信号和槽时不是需要connect?

除了connect,Qt还可以使用函数名来自动连接

pushButton 发送信号对象 (ui中的对象名)

clicked 信号

头文件中自动生成了这个函数

tips:

如果我们是通过图形化界面创建控件,可以直接使用快速生成槽的方式

但是我们通过代码来创建时,需要手动去connect,因为就算将函数名写对,在头文件中没有这个connectSlotByName函数的声明;

自定义信号

在实际开发中很少使用到自定义信号

1.信号在Qt中是一个特殊的函数,我们需要对这个自定义信号进行声明,并且告诉编译器这是个信号函数

2.信号的返回值必须是void

扫描到类中的signals关键字时,会自动将以下函数声明认为是信号,并且给这些信号函数自动生成函数定义

Qt也提供了emit关键字 但是其实emit啥也没做😂 建议还是加上 代码的可读性会更高

带参数的信号和槽

信号和槽,也可以自带参数

但是信号和槽的必须传入相同的参数,主要是类型一致,但是数量不一致时,信号中的参数数量也必须必槽参数数量多

Qt中很多内置信号也自带参数

为什么这么设计 :信号中的参数数量也必须必槽参数数量多

一个槽函数,有可能会绑了多个信号

如果只是完全的一对一,那么意味着信号绑定个槽的要求会更高

如果这么设计,就允许信号和槽的绑定更灵活。

Qt中要让某个类能够使用信号和槽,需要给类中添加Q_OBJECT宏

信号与槽的断开

1.使用disconnect来断开连接

与connect用法上非常类似

使用Lambda表达式定义槽函数

相关文章:

  • TensorFlow Lite + OpenCV:在树莓派上实现实时图像识别
  • 网络空间安全(33)MSF漏洞利用
  • 探索天然分子swertiamarin调控脂肪生成的新机制
  • Linux文件管理练习
  • 高并发场景下的淘宝API优化:如何设计商品数据采集系统?
  • EDID读取学习
  • 数字内容体验驱动品牌忠诚跃升
  • [Windows] 轻量级景好鼠标录制器 v2.1 单文件版,支持轨迹+鼠标键盘录制复刻
  • 解决 Linux 系统中 root 用户无法打开图形界面问题
  • 【SpringMVC】常用注解:@ModelAttribute
  • java手机号、邮箱、日期正则表达式
  • 【一起来学kubernetes】12、k8s中的Endpoint详解
  • 2024年12月CCF-GESP编程能力等级认证C++编程四级真题解析
  • 【FPGA实战】Verilog实现DE2-115的流水灯控制
  • 自动化测试-网页聊天室
  • 模型评估——acc、P、R、F值、交叉验证、K折交叉验证
  • 方差,协方差及协方差矩阵的计算
  • 二分+前缀和/滑动窗口——成绩统计
  • Linux黑科技防裁防背锅六芒星战阵
  • MySQL开发陷阱与最佳实践:第1章:MySQL开发基础概述-1.1 MySQL简介与应用场景
  • 中国证监会:帮助受关税政策影响较大的上市公司纾困解难
  • 潘功胜:央行将设立5000亿元服务消费与养老再贷款
  • 青岛双星名人集团董事长发公开信称家人逼迫交出管理权?公司回应
  • 消失的日本中年劳动者:任何人都有与社会脱节的风险
  • 我给狗狗上课,月赚四五万
  • AI世界的年轻人|横跨教育与产业,他说攻克前沿问题是研究者的使命