QT 信号与槽

2023-11-12

        QT核心便是信号与槽,通过信号将数据在界面和类中,在本类和其他类中发送和接收。信号负责发送数据(也可以单纯的发送信号),槽负责接收。

系统自定义的槽

        

在相应组件上单机右键转到槽即可看见这列表,例如:一般按钮事件的点击(clicked),松开(released),按下(pressed)等。选择相应的槽,那么它会自动帮你做上个步骤:

        1、信号注册

        2、槽函数生成

        3、信号与槽的绑定

如图:你选择相应的槽,那么他就会在相应的.h和。cpp文件中自动声明槽函数:

        private slots 下声明的函数全是槽函数

        同时也会生成空白模板的槽函数定义

自动生成的槽函数

然后你就可以在槽函数里进行自己的逻辑代码操作了默认槽函数的参数是不需要改的,因为自动发送的信号就是与参数对应的,除非要自己额外发送信号给这个槽,那么你就可以去添加自己的函数。

手动定义信号与槽

        第一步:手动配置信号

        

        直接在发送信号的对象类中用signals关键字来修饰对应的信号,信号没有返回值的,参数自定义,你想让信号传参就自己加,单纯的发信号也可无参,很随意,看需求即可。

        第二步手动定义槽函数:

在接收的对象类中添加槽函数,直接声明定义即可,但需在 private slots 下声明,定义的话就自己看着写咯,

        第三不关键来咯————连接信号与槽

[static] QMetaObject::Connection QObject::connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection)

这是官方给的原函数,看不懂就别看,我也看的不是很懂,

总之:

意思就是 connect(发送信号这,信号,信号接收者,接收者的槽);顶多就是写的形式分为QT4的写法和QT5的写法。

QT5:

    connect(ui->add1,&QTextEdit::textChanged(),SLOT( mylabel_add1(ad1)));
    connect(ui->add2,&QTextEdit::textChanged(),SLOT( mylabel_add2(ad2)));
    connect(ui->add,&QPushButton::clicked(),SLOT( mybtn_add(ad1,ad2,sum));

这就是QT5的写法就是通过类名查找信号发送者,完事后直接通过槽的名字查找槽。(不好理解)

我不是很喜欢,

QT4:

connect(this,SIGNAL(mysignal(QPair<QString,QString>)),this>parentWidget(),SLOT(userinfore(QPair<QString,QString>)));

这种虽然长点但更好理解,connect(发送信号这,信号,信号接收者,接收者的槽),这个报错一般是看不懂的QT5报错就比较好理解了;

然后,就没有然后了。就完成了。

这还一张总结的思维导图:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT 信号与槽 的相关文章

随机推荐

  • 文件(file)和流(stream)的联系和区别

    文件 File 和流 Stream 是既有区别又有联系的两个概念 文件是计算机管理数据的基本单位 同时也是应用程序保存和读取数据的一个重要场所 存储介质 文件是指在各种存储介质上 如硬盘 可移动磁盘 CD等 永久存储的数据的有序集合 它是进
  • 2023蓝桥杯c/c++省赛B组题目(最全版):

    目录 A 日期统计 B 01 串的熵 C 冶炼金属 D 飞机降落 E 接龙数列 F 岛屿个数 G 子串简写 H 整数删除 I 景区导游 J 砍树 A 日期统计 B 01 串的熵 用Excel做比较方便 让我看看有谁 哈哈哈哈哈 答案当然就是
  • 力扣算法——简单题 回文数(Java解法)

    题目描述 判断一个整数是否是回文数 回文数是指正序 从左向右 和倒序 从右向左 读都是一样的整数 例如 121 13431 是回文数返回true 不是则返回false 解题思路 首先可以排除负数 比如 2332 从左向右读 为 2332 从
  • 一. SpringCloud Alibaba Sentinel 基础使用示例

    目录 一 基础解释 Sentinel 下载启动 二 Sentinel 使用示例 创建被 Sentinel 监管的服务 一 基础解释 github sentinel 中文版 SpringCloud Alibaba Sentinel 分布式系统
  • SQL Server(数据管理之增删查改)

    一 代码单词 二 先系统敲一个表 好了后代码全选 点击执行 当下面弹出命令已完成 就表示表建好了 三 在表中增加数据 增加方法 选中增加代码 执行 这里报错是因为sid 学生学号 在创建表的时候设置了自增 identity 所有不能给sid
  • 程序员如何利用chatGPT提高开发效率

    对于编程人员来说了解 ChatGPT 是很有帮助的 因为它是一个自然语言处理模型 可以用于处理各种文本任务 例如生成代码注释 代码自动补全 错误检测和纠正 问题回答等等 通过利用 ChatGPT 程序员可以更快速地生成代码 更准确地理解和回
  • 7-45 海选高大中锋

    HDU篮球队需要一个高大中锋 只要个子高 不会打球没关系 请你从n个候选人找出个子最高的 输入格式 第1行包含一个整数n 表示人数 第2行包含n个实数 表示n个人的身高 输出格式 包含一个实数 表示最高的人的身高 小数点保留2位 输入样例
  • Unity3D接入Android第三方SDK流程

    目录 一 SDK调用Unity3D 二 Unity3D调用SDK 1 在Unity中新建一个脚本 调用MySDkPlatform中的方法 四 打包 1 方式一 SDK打成plugins给Unity unity版 2 方式二 Unity导出安
  • 锁定文件失败 打不开磁盘“E:\HP02\HP01-cl1.vmdk”或它所依赖的某个快照磁盘。 模块“Disk”启动失败。 未能启动虚拟机

    解决办法 将框内文件删除
  • Entity Framework Core系列教程-5-第一个应用程序

    第一个EF Core控制台应用程序 在这里 您将逐步学习如何将Entity Framework Core与Code First方法结合使用 为了演示这一点 我们将使用Visual Studio 2019创建一个 NET Core Conso
  • iMX6ULL学习(二)

    文章目录 Makefile机制规则 一 通配符 二 PHONY假想目标 三 即时变量和延迟变量 四 make函数 foreach VAR LIST TEXT filter out PATTERN TEXT filter out patter
  • 如何根据利用企业微信机器人群自动推送消息

    如何根据利用企业微信机器人群自动推送消息 1 自动推送文字 消息 艾特所有人或指定人等等 import request 发起https requests请求 url 此处填入自己创建的企业微信机器人的url def bot txt url
  • Unix 时间戳(stm32实现解析与转换)

    1 什么是Unix时间戳 Unix时间戳是从1970年1月1日 UTC GMT的午夜 开始所经过的秒数 不考虑闰秒 1 Unix时间戳 英文为Unix epoch Unix time POSIX time 或 Unix timestamp
  • 轻松理解HTTP协议

    一起深入了解http和https协议吧 了解http协议 1 http是什么 2 认识URL 2 1URL 2 2urlencode和urldecode 3 http传输格式 3 1http请求 3 2http响应 4 http请求方法 4
  • ftp将网站发布到服务器,ftp工具将网站上传到服务器

    ftp工具将网站上传到服务器 内容精选 换一换 支持将华为云服务器上的音视频文件通过内网方式上传到与服务器在同一区域的视频点播服务中 但您需要先将服务器当前使用的DNS切换为华为云的内网DNS 具体请参见怎样切换内网DNS 然后使用视频点播
  • 二分查找法和顺序查找法

    二分查找1 二分查找 Binary Search 二分查找又称折半查找 它是一种效率较高的查找方法 二分查找要求 线性表是有序表 即表中结点按关键字有序 并且要用向量作为表的存储结构 不妨设有序表是递增有序的 2 二分查找的基本思想 二分查
  • system和vendor分区挂载解析(Android O)

    首先我们知道init进程在运行时会调用自身 所以init进程分为stage1和stage2两个阶段 而分区挂载操作也分为两个阶段 stage1挂载操作是利用device tree中的配置项来读取配置挂载的 stage2挂载操作则是我们常见的
  • 数据库一对多查询

    环境搭建 实体类 Data public class Teacher private int id private String name private List
  • anaconda不同设备之间的环境复制问题

    问题 由于一些原因 需要从别的机器上复制环境到新的机器上 直接找到anaconda3 envs 下的环境 整个包复制到新的机器上的相同路径下 但是这样虽然能够使用python 并且import其中的库 但是如果要使用pip的时候 会报错 b
  • QT 信号与槽

    QT核心便是信号与槽 通过信号将数据在界面和类中 在本类和其他类中发送和接收 信号负责发送数据 也可以单纯的发送信号 槽负责接收 系统自定义的槽 在相应组件上单机右键转到槽即可看见这列表 例如 一般按钮事件的点击 clicked 松开 re