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

Qt信号和槽

一、介绍

1、介绍信号和槽

在之前的按钮使用中我们初步认识了信号和槽。简单来说就是:

信号源:哪个控件发出的信号。

信号类型:用户对控件的不同操作发出不同的信号。

信号处理方式:槽(对应的回调函数)

2、介绍关联函数 connect

connect 函数:Q_OBJECT 宏自带的静态函数,用于关联信号和槽。

下图是 connect 定义:

const QObject* sender :信号源

const char* signal :信号源发出的信号类型

QObjecct* recever :处理信号者

const char* method :处理信号方式

下图是一个简单的 connect 函数使用:

但是我们提到槽其实是一个函数,上面的 connect 函数参数是 const char* ,这是怎么回事呢?

其实在早期传入信号和槽是需要调用宏来实现的,宏的作用就是把函数指针转成字符串,新版的 connect 函数重载了一个新的:

定义了模板传入的就是任意类型的函数指针。

二、自定义槽函数

上面简单使用 connect 是用的控件默认的信号和槽,下面介绍如何自定义槽函数。

槽函数就是处理信号的回调函数,有两种定义方式。

1、定义成成员函数

widget.h:

widget.cpp:

结果:

2、ui 界面点击定义

上面是堆定义按钮实现按钮按下的槽函数,这里实现拖拽按钮定义槽函数。

ui 界面:

右击控件,选择转到槽:

双击信号 clicked(bool),自动转到定义函数文件 widget.cpp:

结果:

三、自定义信号

1、介绍信号

信号也是一类特殊的函数。

程序员只写出信号的声明并告诉 Qt 这是一个信号函数。函数的定义由 Qt 自动生成,程序员无法干预。

信号函数返回值一定是 void,参数随意,可以重载。

2、自定义信号

widget.h:

signals:就代表我要定义信号函数了。

对应还要实现槽函数 handlerMySignal()

widget.cpp:

实现完槽函数之后,关联槽和信号,

不同于内置信号,用户对控件做出特定行为自动发射信号,自定义信号用 emit 信号 的方式指定位置发射信号调用槽函数。

结果:

四、带参数的信号和槽

信号的参数会作为实参传到槽函数的参数进行逻辑处理。

所以信号和槽对应参数类型一定要一致,但是信号的参数大于等于槽函数的参数,这么做的目的是多个信号对应一个槽函数。

槽函数按顺序拿前 n 个参数。

widget.h:

widget.cpp:

结果:

五、断开连接 disconnect

使用方法和 connect 基本一样,当一个信号要换一个槽函数的时候就需要先断开连接再连接。

widget.h:

widget.cpp:

逻辑就是一个按钮可以改变窗口名字,一个按钮可以改变那个按钮原本的窗口名字。

结果:

先点击修改窗口标题

再点击切换按钮功能后点击修改窗口标题:

六、槽函数 lambda 表达式

和 C++11 的方法一样,不赘述。

相关文章:

  • uniapp 系统学习,从入门到实战(八)—— Vuex 的使用
  • Oracle删除重复数据保留其中一条
  • C++:volatile、const、mutable关键字
  • SQL-labs less9-12 闯关记录
  • 2继续NTS库学习(读取shapefile)
  • 【前端】WebStorm多功能计时工具:网页版模拟时钟、秒表与倒计时器
  • Microsoft.Office.Interop.Excel 的简单操作
  • LeetCode 面试题 17.19. 消失的两个数字
  • 学习笔记-DeepSeek 开源第五天: 3FS 文件系统和 Smallpond 数据处理框架
  • 特征分解(Eigen decomposition)在深度学习中的应用与理解
  • 小程序接入mqtt并需要启动第三方机构的证书认证配置案例
  • KVM虚拟机磁盘创建探究-2
  • 2022java面试总结,1000道(集合+JVM+并发编程+Spring+Mybatis)的Java高频面试题
  • 数据结构——队列
  • 图形化界面MySQL(MySQL)(超级详细)
  • 系统讨论Qt的并发编程2——介绍一下Qt并发的一些常用的东西
  • windows上执行scp命令
  • 《基于大数据的相州镇新农村商务数据分析与研究》开题报告
  • k8s 中各种发布方式介绍以及对比
  • 【读代码】关于日期的处理
  • 导航网站网站提交怎么做/网络营销和传统营销的区别
  • 紫色网站模板/关键词排名网络推广
  • 北京网站建设 性价比/seo优化的基本流程
  • 中华人民共和国城乡和建设部网站/百度推广客户端怎样注册
  • 网络建设与网站建设/可以免费做网站推广的平台
  • 企业主页包含/seo的定义