首页 > 其他分享 >一文带你真正理解connect(信号与槽机制)

一文带你真正理解connect(信号与槽机制)

时间:2024-12-30 21:28:08浏览次数:7  
标签:函数 自定义 信号 connect student 重载 一文

提示:信号与槽机制是学习QT的第一步,也是重要的一步

信号与槽



一、什么是connect函数?

connect是连接信号和槽的一个重要函数,

connect的语法:connect(信号的发出者,发出的信号,信号的接收者,处理的槽函数)
connect函数的用法可以参照下图,举个简单的例子:人通过摩擦摩擦的动作,使得灯神出来,可以对照为按钮通过点击,然后窗口关闭。

在这里插入图片描述

二、使用步骤

1.使用QT内置的信号和槽函数

在QT中,许多控件有很多内置的信号和槽函数,例如,在QPushbutton这个控件中,可以在帮助文档中找到它的信号和槽
在这里插入图片描述

代码如下(示例):

//写一个简单的点击按钮关闭窗口
QPushButton*m_button = new QPushButton("关闭窗口",this);
connect(m_button,&QPushButton::clicked,this,&QWidget::close);
//clicked为内置的信号,close为内置的槽函数

2.自定义信号和槽函数

在新创建的类中,可以在这里自定义信号和槽函数
在这里插入图片描述
信号创建满足以下规则:
1.自定义信号写在signals下
2.返回值是void,只需要声明,不需要实现
3.可以有参数,可以发生重载

槽函数则满足以下规则:
1.可以有参数,可以发生重载
2.返回值是void,需要声明,也需要实现

代码如下(示例):

//创建好信号和槽,就可以使用了
student *m_student=new student(this);
connect(m_student,&student::hung,m_student,&student::shot);
emit m_student->hung();

这里的emit是调用我们创建的信号,调用信号后才启用槽函数。


3.自定义的信号与槽发生重载

在 Qt 中,信号和槽机制是一种强大的事件处理机制。当一个信号被发射时,与之关联的槽函数可以接收信号所携带的参数。

自定义的信号和槽发生重载在函数实现上本质无区别,主要是在调用时有变化。例如:在这里插入图片描述
在信号和槽重载了两个版本。正常来说使用connect函数是这样使用的
在这里插入图片描述
但这是错误的
要让编译器正常的找到函数的地址,就要使用函数指针,写法如下:


void(student:: *studentsignal)(QString)=&student::hung;
void(student:: *studentslot)(QString)=&student::shot;

connect(m_student,studentsignal,m_student,studentslot);
emit m_student->hung("哈哈哈");

这样就能正确使用重载版本了。

4 .信号可以连接信号

connect不只是只能信号连接槽函数 ,也能信号连接信号,大家可以自己测试

总结

以上是connect函数常见使用的细节

标签:函数,自定义,信号,connect,student,重载,一文
From: https://blog.csdn.net/2301_76771136/article/details/144770607

相关文章

  • UART信号测试:确保通信质量
    在现代电子系统中,串行通信是实现数据交换的核心手段之一。UART(通用异步收发传输器)作为一种常见的串行通信协议,被广泛应用于嵌入式设备、微控制器及其他低速通信系统中。UART信号的可靠性直接影响着通信系统的稳定性和数据传输的准确性。因此,进行UART信号测试是确保设备正常工作......
  • 你被拉黑过吗?一文说明,被雷池情报库拉黑的 IP 是怎么的
    在使用雷池的时候,经常会遇到源IP被 恶意IP情报库 拉黑的情况,如下图什么样的IP会进入 长亭恶意IP情报库长亭恶意IP库是由超过20万雷池社区用户共创组成的IP情报网。安装雷池WAF后若启用 IP情报共享计划,所有的攻击IP会回传至长亭IP情报收集系统这里......
  • 一文速览数据可视化工具
    数据可视化工具是指用于将复杂数据转化为图形、图表、地图和其他视觉表现形式的软件,它们帮助用户更容易地理解和分析数据、提高数据分析效率、支持决策制定。以下是对数据可视化工具的详细介绍:一、重要性数据可视化工具的重要性在于其能够将数据转化为易于理解的信息,从而提高业......
  • 一文读懂offsetHeight/offsetLeft/offsetTop/offsetWidth/offsetParent
    一、偏移量对于块级元素来说,offsetTop、offsetLeft、offsetWidth、offsetHeight描述了元素相对于offsetParent的边界框。偏移量:包括元素在屏幕上占用的所有空间,元素的可见大小有高度,宽度决定,包括所有的内边距,滚动条和边框大小(注意:不包含外边距),本文讲解的属性可获取元素的偏移......
  • 一文读懂 Linux 磁盘使用情况查看
    一文读懂Linux磁盘使用情况查看在Linux系统管理与运维工作中,时刻掌握磁盘的使用状况对保障系统稳定运行、提前规划存储扩容至关重要。Linux提供了丰富且功能各异的工具,用于查看磁盘使用详情,本文将深入介绍这些实用工具,并结合实际操作示例,助力大家轻松驾驭磁盘管理工作......
  • 一文搞定宝塔LINUX部署上线前后端分离项目
    一文搞定宝塔LINUX部署上线前后端分离项目地址:http://82.156.126.178/部署方案:宝塔Linux,腾讯云服务器2核2G3M,数据库使用腾讯云托管平台mysql1.跨域问题解决首先前端区分线上环境和开发环境,主要是请求地址不一样importaxiosfrom'axios'constprefix=process.env.NODE_EN......
  • 电能质量扰动信号分类,基于Transformer的一维信号分类模型附PyTorch代码
    目录背景研究方法研究内容研究框架代码实现背景在电力系统中,电能质量指的是电压、电流和频率等参数的稳定性和纯净度。然而,由于设备故障、电力负载变化、电力系统故障或其他外部因素,电力系统中可能会出现各种电能质量扰动。这些扰动不仅影响电力系统的稳定运行......
  • 一文读懂-多智能体编译:从例行到交接的奥秘
    还记得电影《机械姬》中那个能与人自然对话的AI吗?如今,让AI智能体像人类团队一样默契配合,已经不再是科幻...Hey,大家好!我是Leon!......
  • 一文详解-JavaScript中 es5 原型和 es6-class
    一文详解-JavaScript中es5原型和es6-class原型真的有用吗有不少小伙子应该会有这个感觉大家都在说原型prototype很重要,那为什么我却用不到?原因不外乎这几个:框架重度使用者,我们目前的前端主流业务,几乎都是使用vue,react,微信小程序在开发项目。这些框架封装得太过......
  • 随身WiFi-散热+信号增强简单改造,网络体验爽到飞起
    随身WiFi相关(程序+源码+工具+调试部署+开发环境)总共500多GB以上,文章末尾可获取,在最后面了。散热改造使用记号笔在前盖画出散热片的轮廓,用手钻在四周钻孔,并用壁纸刀切割。最后安装散热片,增强WiFi棒子的散热能力,提高信号稳定性和降低延迟。信号增强将易拉罐沿中线剪开,并加......