首页 > 其他分享 >qt开发-03——信号与槽

qt开发-03——信号与槽

时间:2024-06-20 20:28:08浏览次数:23  
标签:SLOT 03 Qt 函数 QObject connect 信号 qt

信号与槽(Signal & Slot)是 Qt 编程的基础,也是 Qt 的一大创新。因为有了信号与槽的
编程机制,在 Qt 中处理界面各个组件的交互操作时变得更加直观和简单。
信号(Signal)就是在特定情况下被发射的事件,例如 PushButton 最常见的信号就是鼠标
单击时发射的 clicked() 信号,一个 ComboBox 最常见的信号是选择的列表项变化时发射的
CurrentIndexChanged() 信号。
GUI 程序设计的主要内容就是对界面上各组件的信号的响应,只需要知道什么情况下发射
哪些信号,合理地去响应和处理这些信号就可以了。
槽(Slot)就是对信号响应的函数。槽就是一个函数,与一般的 C++函数是一样的,可以
定义在类的任何部分(public、private 或 protected),可以具有任何参数,也可以被直接调用。
槽函数与一般的函数不同的是:槽函数可以与一个信号关联,当信号被发射时,关联的槽函数
被自动执行

信号与槽关联是用 QObject::connect() 函数实现的,其基本格式是:
QObject::connect(sender, SIGNAL(signal()), receiver, SLOT(slot()));
connect() 是 QObject 类的一个静态函数,而 QObject 是所有 Qt 类的基类,在实际调用
时可以忽略前面的限定符,所以可以直接写为:
connect(sender, SIGNAL(signal()), receiver, SLOT(slot()));
其中,sender 是发射信号的对象的名称,signal() 是信号名称。信号可以看做是特殊的函
数,需要带括号,有参数时还需要指明参数。receiver 是接收信号的对象名称,slot() 是槽函数
的名称,需要带括号,有参数时还需要指明参数

SIGNAL 和 SLOT 是 Qt 的宏,用于指明信号和槽,并将它们的参数转换为相应的字符
串。

例子如下:

QObject::connect(pushButton, SIGNAL(clicked()), MainWindow, SLOT(close()));


其作用就是将 pushButton 按钮的 clicked() 信号与窗体(MainWindow)的槽函数 close() 相
关联,这样,当单击 pushButton 按钮(就是界面上的“X”按钮)时,就会执行 MainWindow
的 close() 槽函数。

信号与槽就像是上课铃和学生

上课铃响了 ----> 发送信号  ----> 学生 ---->上课

发送者                 信号                  接受者     槽

自定信号与槽:

首先自己创建一个类:

.

创建好后可以看到在student 类里面有:

sigals 就是信号可以在下面定义信号:

solt 要自己加:

定义完后要在头文件中声明类:

在到源文件中实例化类:

通过connect连接两个类。

在学生槽中添加一个打印函数来演示效果:

运行结果:

标签:SLOT,03,Qt,函数,QObject,connect,信号,qt
From: https://blog.csdn.net/LaK_Zhu/article/details/139754900

相关文章

  • qt开发-05_QPushButton
    按钮是最常用的控件;如果找不到文件可以这样:选择这个复制文件的路径,粘贴就可以了。在qt中新建一个项目,并且打开ui界面添加一个按钮;右键这个按钮可以有很多功能:先是这个转到槽,这个就是给按钮的动作添加效果的功能:这里有很多类的槽方法。都是源于他继承的父类。我们选择......
  • 03.VisionMaster 机器视觉 位置修正 工具
    VisionMaster机器视觉位置修正工具官方解释:位置修正是一个辅助定位、修正目标运动偏移、辅助精准定位的工具。可以根据模板匹配结果中的匹配点和匹配框角度建立位置偏移的基准,然后再根据特征匹配结果中的运行点和基准点的相对位置偏移实现ROI检测框的坐标旋转偏移,也就是让ROI......
  • 题解:CF1829H Don't Blame Me
    动态规划好题。对于此题解,不懂的问题可以私信笔者。前置知识解题方法用\(dp_{i,j}\)表示前\(i\)个数选择了若干个数按位与之后为\(j\)的子序列个数。接下来思考转移。想到这里,你会发现按位与没有逆运算,一次我们要正推,例如\(f_{i+2}=f_{i}+f_{i+1}\)。那么转移方程不......
  • Excel 2003编辑和保存.bdf文件
    Excel2003可以直接编辑和保存.dbf文件。从Excel2007之后没有了这个功能,所以请认准office2003/excel2003,可以用来编辑arcgisshapefile的dbf文件。 ————————————————还可以参考下面文章链接:https://blog.csdn.net/skytruine/article/details/80493585......
  • 基于AD9009的PCIe射频信号采集回放卡
    基于AD9009的PCIe射频信号采集回放卡PCIe射频收发平台75MHz至调谐范围200MHz瞬时带宽基于RF-IC芯片PCIe射器和接收器、集成式频率合成器以及数字信号处理功能。满足3G、4G和5G宏蜂窝时分双工(TDD)基站应用要求。接收链路由两个独立的带宽、直接变频接收器组成,具有出色的动射频......
  • SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes
     SyntaxError:(unicodeerror)'unicodeescape'codeccan'tdecodebytes报错解释:这个错误通常发生在Python代码中,当你尝试使用包含反斜杠(\)的字符串时。在Python中,反斜杠通常用于开始转义字符序列。例如,\n 代表一个换行符。在字符串前加 r 可以阻止这种转义,但是......
  • 1-STM32F103+ESP8266+ML307(中移4G Cat1)--硬件使用说明
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ZLIOTB/ML307/my.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p> 实物图 板载说......
  • 软件测试入门基础03-MySQL
    前言:这是我个人的学习记录,我是科班在读有一定基础,很多东西不会特别详细,欢迎大佬指点,也很高兴有人看了能得到帮助这一小节的内容是MySQL,我已经修完数据库,但时间久远忘记许多于是又看了一遍做个笔记。印象中数据库挺简单,简单的说就是增删改查。我修这门课时把实验做完基本上知......
  • 485总线8路4~20mA模拟量采集模块DAM3158A电压电流信号可同时采集
    阿尔泰科技485总线模拟量采集模块DAM3158A电压电流信号采集简要介绍:     阿尔泰科技DAM3158A/3158系列为8路模拟量输入,RS485通讯接口,带有标准ModbusRTU协议。可方便链接:组态王、力控、易控、MCGS等组态软件同时也可以和昆仑通态、威纶通等触摸屏及无线DTU一起使......
  • pymongo pymongo.errors.ServerSelectionTimeoutError: Could not reach any servers
    代码myclient=pymongo.MongoClient("mongodb://root:[email protected]:27017/xxx?authSource=admin")mydb=myclient["xxx"]mycol=mydb["xxx"]报错全文pymongo.errors.ServerSelectionTimeoutError:Couldnotreachanyserversin......