首页 > 其他分享 >【Qt】:信号与槽(二)

【Qt】:信号与槽(二)

时间:2024-03-30 09:29:37浏览次数:21  
标签:11 Qt 函数 参数 信号 表达式 Lambda

信号与槽

一.带参数的信号和槽

  1. Qt的信号和槽也⽀持带有参数,同时也可以⽀持重载.
  2. 此处我们要求,信号函数的参数列表要和对应连接的槽函数参数列表⼀致.(一致指的是类型一致,如果个数不一致,那么信号参数个数要比槽个数的参数多)
  3. 此时信号触发,调⽤到槽函数的时候,信号函数中的实参就能够被传递到槽函数的形参当中.

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

前面提到信号的参数比槽的参数多,为什么要这样设置呢?这是因为槽和信号可以多对多绑定,如果我们严格要求参数一致,那么意味着信号绑定槽的要求更高了。换而言之,就是为了让槽和信号的绑定更加灵活。

二.信号与槽的多对多连接

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

三.信号与槽的断开

使⽤disconnect即可完成断开.disconnect的⽤法和connect基本⼀致。但是该函数很少被使用,一般而言我们断开该信号的连接是为了与其它槽相连,除此之外基本connect后就不再管了。

创建两个按钮,第一个按钮改变标题,第二个按钮断开第一个按钮的连接,让第一个按纽改变另一个标题

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

四.lamda表达式定义槽函数

Qt5在Qt4的基础上提⾼了信号与槽的灵活性,允许使⽤任意函数作为槽函数。但如果想⽅便的编写槽函数,⽐如在编写函数时连函数名都不想定义,则可以通过Lambda表达式来达到这个⽬的。

Lambda表达式是C++11增加的特性。C++11中的Lambda表达式⽤于定义并创建匿名的函数对象,以简化编程⼯作。

在这里插入图片描述

在这里插入图片描述

lambda表达式不再多说,如果不了解,可以看我的博客c++11新特性部分。

说明:

  1. 由于使⽤引⽤⽅式捕获对象会有局部变量释放了⽽Lambda函数还没有被调⽤的情况。如果执⾏
    Lambda函数,那么引⽤传递⽅式捕获进来的局部变量的值不可预知。所以绝⼤多数场合使⽤的形式为: [=] () { }
  2. 早期版本的Qt,若要使⽤Lambda表达式,要在".pro"⽂件中添加: CONFIG += C++11 因为Lambda表达式是C++11标准提出的。Qt5以上的版本⽆需⼿动添加,在新建项⽬时会⾃动添加

在这里插入图片描述

在这里插入图片描述

问题

当我们在表达式里调用上层变量时,是无法成功的。

在这里插入图片描述

因为在c++里,lambda是一个回调函数,所以如果没对它进行参数捕获,它就无法调用其它函数里的变量。这里其实是c++的知识,也就不再多说了,不了解可以看我的博客c++11新特性部分。

在这里插入图片描述

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

标签:11,Qt,函数,参数,信号,表达式,Lambda
From: https://blog.csdn.net/m0_73790767/article/details/137150888

相关文章

  • Python环境下一种改进小波分解方法-用于多分量信号的分解
    小波通俗的讲就是一种振幅表现为在正负之间震荡的波形。小波变换在基于短时傅立叶变换的前提下,又加入了其所没有的可随频率变化的“时间-频率”窗口,其能对时间、频率进行局部化分析,并且对待处理信号通过多尺度处理使其表现为时-频细分的特点,是一种能突出信号时频特点以及细节的......
  • qt窗口的应用与pyinstaller打包APP操作
    3月29日qt打包APP操作1先在windowsshell中下载打包软件Pylnstallerpipinstallpyinstaller2先进入py项目所在的位置,再执行以下代码(我用的qt版本是PySide6可以根据自己的情况修改)pyinstallers02.py--noconsole--hidden-importPySide6.QtXml3因为打包的时......
  • 【QT入门】 QListWidget各种常见用法详解之图标模式
    往期回顾【QT入门】Qt代码创建布局之多重布局变换与布局删除技巧-CSDN博客【QT入门】QTabWidget各种常见用法详解-CSDN博客【QT入门】QListWidget各种常见用法详解之列表模式-CSDN博客【QT入门】QListWidget各种常见用法详解之图标模式QListWidget有列表和图标两种......
  • 【QT入门】 QTabWidget各种常见用法详解
    往期回顾:【QT入门】Qt代码创建布局之分裂器布局详解-CSDN博客【QT入门】Qt代码创建布局之setLayout使用-CSDN博客【QT入门】Qt代码创建布局之多重布局变换与布局删除技巧-CSDN博客 【QT入门】QTabWidget各种常见用法详解一般来说,学一个新的控件,首先要看他是怎么构......
  • 操作系统实验6之信号量的实现与应用
    操作系统中常用信号量相关系统调用函数用法1、sem_open:用于创建或打开一个命名的信号量。点击查看代码#include<semaphore.h>sem_t*sem_open(constchar*name,intoflag,mode_tmode,unsignedintvalue);name:信号量的名称,必须以斜杠开头,例如/my_semaphore。oflag:......
  • 【Qt】常用控件(输入类)
    目录一、LineEdit二、TextEdit三、ComBo四、DateTimeEdit五、Slider一、LineEditQLineEdit用来表示单行输入框,可以输入一段文本,但是不能换行。属性说明test输入框中的文本inputMask输入内容格式约束maxLength最大长度frame是否添加边框echoMode显示方式,normal,Pa......
  • 【QT+QGIS跨平台编译】040:【geos_c+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
    点击查看专栏目录文章目录一、geos_c介绍二、文件下载三、文件分析四、pro文件五、编译实践一、geos_c介绍  GEOS_C(GEOSC++接口)是GEOS库的C语言版本,它提供了一套丰富的API,允许开发者在C++程序中执行复杂的几何形状处理和空间关系分析。GEOS_C是基于JTS(Jav......
  • 【详解】运算放大器工作原理及其在信号处理中的核心作用
    什么是运算放大器运算放大器(简称“运放”)是一种放大倍数非常高的电路单元。在实际电路中,它常常与反馈网络一起组成一定的功能模块。它是一种带有特殊耦合电路和反馈的放大器。输出信号可以是输入信号的加法、减法、微分和积分等数学运算的结果。由于早期用于模拟计算机中实现......
  • 基于单片机三路信号故障诊断仿真设计
    单片机设计介绍,基于单片机三路信号故障诊断仿真设计文章目录一概要二、功能设计设计思路三、软件设计原理图五、程序六、文章目录一概要  基于单片机三路信号故障诊断仿真设计概要主要涵盖了系统设计的整体框架、关键模块功能、仿真方法以及预期实现的目......
  • Qt 大小端字节序转换的方法
    在Qt中,可以使用qToLittleEndian和qToBigEndian两个函数来实现大小端字节序之间的转换。1.转换为小端字节序:1quint32num=0x12345678;2quint32littleEndianNum=qToLittleEndian(num);//转换为小端字节序2.转换为大端字节序:1quint32num=0x12345678;2quint......