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

从0到1学习Qt -- 信号和槽(二)

1. 自定义信号和槽

1.1. 基本语法

在 Qt 中,允许⾃定义信号的发送⽅以及接收⽅,即可以⾃定义信号函数和槽函数。但是对于⾃定义的信号函数和槽函数有⼀定的书写规范。
1.⾃定义信号函数书写规范
(1)⾃定义信号函数必须写到 "signals" 下;
(2)返回值为 void,只需要声明,不需要实现;
(3)可以有参数,也可以发⽣重载;
2.⾃定义槽函数
(1)⾃定义信号函数必须写到 "signals" 下;
(2)返回值为 void,只需要声明,不需要实现;
(3)可以有参数,也可以发⽣重载;
3.发送信号
使⽤ "emit" 关键字发送信号 。"emit" 是⼀个空的宏。"emit" 其实是可选的,没有什么含义,只是为了提醒开发⼈员。

1.2. 示例1

1.2.1. 先在widget.h中声明自定义函数和槽函数

1.2.2. 在widget.cpp中实现自定义的槽函数

1.2.3. connect绑定自定义的信号和槽函数并发射信号

测试结果:

1.3. 示例2

1.3.1. 示例说明

当⽼师说 "上课了",学⽣们就 "回到座位,开始学习"。

1.3.2. 对项目先添加两个新的类

注意点击Add New...之后再定义Class name的时候要讲Base class置为 QObject

添加之后的效果:

1.3.3. 分别在teacher.h和student.h两个文件中分别加上自定义函数声明和槽函数声明

在 teacher.h 中声明信号函数:

在student.h中声明槽函数:

1.3.4. 在 widget.h 中实例化 "⽼师类对象" 和 "学⽣类对象"

1.3.5. 在 student.cpp 中实现槽函数

1.3.6. 在 widget.cpp 中连接⾃定义信号和槽

注意:要先new出来Teacher对象和Student对象

1.3.7. 结果演示

1.4. 自定义信号和槽函数的总结

1. 自定义信号只要进行声明,Qt自动生成自定义信号的定义,而自定义槽函数要进行声明和定义

2. 自定义信号要在前面加上关键字:signals,自定义槽函数可以加上public slots 或者 public

3. 当我们connect的时候要注意信号的发送对象和接收信号的对象

2. 带参数的信号和槽函数

2.1. 简单说明

Qt 的信号和槽也⽀持带有参数, 同时也可以⽀持重载.
此处我们要求, 信号函数的参数列表要和对应连接的槽函数参数列表⼀致.
此时信号触发, 调⽤到槽函数的时候, 信号函数中的实参就能够被传递到槽函数的形参当中.

2.2. 示例1

2.2.1. 重载信号槽,在 "widget.h" 头⽂件中声明重载的信号函数以及重载的槽函数

2.3.2. 在 "Widget.cpp" ⽂件实现重载槽函数以及连接信号和槽

2.3.3. 观察执行结果

执行结果如下:

3. 信号与槽的连接方式

3.1. 一对一连接

主要有两种连接形式,分别是:一个信号连接一个槽,一新信号连接到另外一个信号

3.1.1. 一个信号连接一个槽

示例:一个按钮被触发执行自定义槽函数

widget.h代码如下:

widget.cpp代码如下:

执行结果如下:

3.1.2. 一个信号连接一个信号

示例:按钮的clicked信号关联到自定义的信号,自定义的信号关联到自定义槽函数

widget.h代码如下:

widget.cpp代码如下:

执行结果如下:

按一次按钮就会在控制台上打印相关信息

3.2. 一对多的链接

一对多的连接分为:一个信号连接多个槽函数,一个槽函数连接多个信号

3.2.1.一个信号连接多个槽函数

示例:按钮的触发信号关联多个自定义槽函数

widget.h代码如下:

widget.cpp代码如下:

执行结果如下:

3.2.2. 多个信号关联一个槽函数

示例:自定义多个信号,关联一个槽函数

widget.h代码如下:

widget.cpp代码如下:

执行结果如下:

http://www.dtcms.com/a/577584.html

相关文章:

  • AI、闪购、造车……双十一的第十七年,京东、阿里、美团还有“新活”
  • IDEA不切换当前分支,实现跨分支合并的终极方案
  • 法考资源合集
  • Redis(四)——事务
  • 便宜的vps租用网站有哪些网站使用ftp
  • TestKeyDownBit函数和SetKeyDownBit函数和ClearKeyDownBit函数分析
  • RHCSA---权限管理
  • Flutter for HarmonyOS开发指南(二):混合开发架构与通信机制
  • 分布式分片执行原理解析
  • 自主建站全攻略:建站系统的选择指南与深度说明
  • 什么网站有做qq群排名的关键词优化价格
  • 网站内容怎么进行编写
  • SSM 房屋租赁系统
  • 网站排名优化服务公司福建省住房和城乡建设网站
  • 开发集成热门小游戏(vue+js)
  • Java-简单项目开发流程
  • 莱芜网站优化平台现在中型公司做网站用的是什么框架
  • 区块链-B站API程序系统方案
  • LVS三种模式及调度算法解析
  • MySql 9.5.0(2025)-Windows安装步骤
  • 查看 MySQL 数据库里的所有信息,包括表结构、数据内容
  • Rocky10 使用kubeadm 安装k8s 单节点
  • K8s 中的Serviceaccount
  • MySQL 事务的两种使用方式
  • 【MySQL 进阶】高性能优化
  • 如何做静态页网站wordpress swf 上传
  • Dotnet-Dapper的用法
  • 深入理解 Spring Boot 中的数据库迁移:Flyway 与 Liquibase 实战指南
  • 使用visa进行仪器控制
  • 百度网站验证创意交易平台官网