信号和槽的使用

news2025/1/20 4:52:16

🐌博主主页:🐌​倔强的大蜗牛🐌​

📚专栏分类:QT
❤️感谢大家点赞👍收藏⭐评论✍️

目录

一、连接信号和槽

二、查看内置信号和槽

三、通过 Qt Creator 生成信号槽代码  


一、连接信号和槽

在 Qt 中,QObject 类提供了⼀个静态成员函数 connect() ,该函数专门用来关联指定的信号函数和槽函数。
关于 QObject
QObject 是 Qt 内置的父类. Qt 中提供的很多类都是直接或者间接继承自 QObject.
(俗点说QObject 是 其他Qt 内置的祖宗)
connect() 函数原型:
connect (const QObject * sender ,
const char * signal ,
const QObject * receiver ,
const char * method ,
Qt::ConnectionType type = Qt::AutoConnection )
参数说明:
  • sender:信号的发送者;
  • signal:发送的信号(信号函数);
  • receiver:信号的接收者;
  • method:接收信号的槽函数;
  • type: 用于指定关联方式,默认的关联方式为 Qt::AutoConnection,通常不需要手动设定。  

在窗口中设置一个按钮,当点击 "按钮" 时关闭 "窗口" .  

代码如下: 

#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    QPushButton*button =new QPushButton(this);
    button->setText("关闭");
    button->move(200,200);
    connect(button,&QPushButton::clicked,this,&Widget::close);
}

Widget::~Widget()
{
    delete ui;
}

二、查看内置信号和槽

系统自带的信号和槽通常是通过 "Qt 帮助文档" 来查询。
要查询 "按钮" 的信号,在帮助文档中输入:QPushButton,
首先可以在 "Contents" 中寻找关键字 signals,
如果没有找到, 继续去父类中查找.因此我们去他的父类 QAbstractButton 中继续查找关键字signals
clicked() 就是要找的信号。槽函数的寻找方式和信号⼀样,只不过它的关键字是 slot 。

 

三、通过 Qt Creator 生成信号槽代码  

在窗口中设置一个按钮,当点击 "按钮" 时关闭 "窗口" .
1、新建项目,如下图为新建完成之后所包含的所有文件;
注意:创建时要生成 UI 设计文件;

 2、双击 widget.ui 文件,进入UI 设计界面;

3、在 UI 设计窗口中拖入一个 "按钮" ,并且修改 "按钮" 的名称及字体大小等;  

 4、可视化生成槽函数;

当单击 "转到槽..." 之后,出现如下界面:对于按钮来说,当点击时发送的信号是:clicked(),所以此处选择:clicked()

 

5、自动生成槽函数原型框架;

(1)在 "widget.h" 头文件中自动添加槽函数的声明; 

说明:
自动生成槽函数的名称有⼀定的规则。槽函数的命名规则为:on_XXX_SSS,其中:
1、以 " on " 开头,中间使用下划线连接起来;
2、" XXX " 表示的是对象名(控件的 objectName 属性)。
3、" SSS " 表示的是对应的信号。
如:" on_pushButton_clicked() " ,pushButton 代表的是对象名,clicked 是对应的信号。

 

(2)在 "widget.cpp" 中自动生成槽函数定义.

6、在槽函数函数定义中添加要实现的功能. 实现关闭窗口的效果; 

 

❤️结语: 

本次精彩内容已圆满结束!希望各位读者在阅读过程中能够收获满满。在此,特别感谢各位读者的支持与三连赞。如果文章中存在任何问题或不足之处,欢迎在评论区留言,蜗牛必定会认真对待并加以改进,以便为大家呈现更优质的文章。你们的支持与鼓励,将是博主不断前进的最大动力。再次感谢大家的陪伴与支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1674137.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

十款开源数据集成工具

在大数据作业开发中&#xff0c;数据集成工具是非常重要的一个环节&#xff0c;一个好的数据集成系统从可用性、架构扩展性、底层引擎选型、数据源支持能力等方面都需要一定的考量&#xff0c;在本文中汇总了十款开源的数据集成系统&#xff0c;作者本人在过往的开发过程中&…

IPSSL证书:为特定IP地址通信数据保驾护航

IPSSL证书&#xff0c;顾名思义&#xff0c;是专为特定IP地址设计的SSL证书。它不仅继承了传统SSL证书验证网站身份、加密数据传输的基本功能&#xff0c;还特别针对通过固定IP地址进行通信的场景提供了强化的安全保障。在IP地址直接绑定SSL证书的模式下&#xff0c;它能够确保…

全国大学生数学建模竞赛【集训营E题】丨 近5年赛题实现,模拟参赛体验

在这个数据驱动、模型塑造未来的时代&#xff0c;数学建模不仅是学术研究的基石&#xff0c;更是解决复杂实际问题的金钥匙。 数学建模竞赛E题集训营技能强化要点&#xff1a; 1、基于Python的数学建模基础巩固 2、近5年E题赛题实现 3、模拟参赛体验与作品…

【Docker系列】Linux部署Docker Compose

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

软件测试之【软件测试初级工程师技能点全解】

读者大大们好呀&#xff01;&#xff01;!☀️☀️☀️ &#x1f525; 欢迎来到我的博客 &#x1f440;期待大大的关注哦❗️❗️❗️ &#x1f680;欢迎收看我的主页文章➡️寻至善的主页 文章目录 &#x1f525;前言&#x1f680;初级测试工程师技能点&#x1f449;测试理论基…

2024精选7个wordpress模板

通用多用途wordpress模板 中国红WordPress模板&#xff0c;适合服务行业企业建站的通用多用途wordpress模板。 WordPress是一款使用PHP语言开发的开源内容管理系统(CMS)&#xff0c;最初设计用于个人博客&#xff0c;但随着时间的发展&#xff0c;它已经演化成为一个功能强大的…

羊大师:成长必备羊大师与健康同行

羊大师&#xff1a;成长必备羊大师与健康同行 在成长的道路上&#xff0c;我们不仅需要知识的积累&#xff0c;更需要健康的体魄作为支撑。羊大师发现在这个过程中&#xff0c;羊大师以其专业的知识和经验&#xff0c;为我们提供了一条与健康同行的成长之路。 羊大师&#xff…

浏览器不兼容 replaceAll 方法问题解决

问题 在一些较旧版本的浏览器中可能会出现 replaceAll 方法不兼容&#xff0c;提示replaceAll 方法 undefined 的问题。浏览器版本兼容情况如下图所示&#xff1a; 解决 可以通过 replace 正则表达式 的方法来代替 replaceAll 方法&#xff1a; let str "我是一段文本…

Redission分布式锁 - 抢课系统

使用Redission分布式锁与Kafka消息队列&#xff0c;实现学生抢课系统&#xff08;高并发秒杀场景&#xff09;。 目录 一、思路1.为频繁访问的信息设置缓存&#xff08;1&#xff09;登陆&#xff08;2&#xff09;课程任务信息&#xff08;3&#xff09;用户抢课记录 2.消息队…

文字转成活码的3步操作,手机扫码即可查看文本信息

现在经常会通过二维码的方式来传递通知的文字信息&#xff0c;只需要分享文字生成二维码的图片到微信群或者印刷出来&#xff0c;其他人就可以通过扫码来查看文字内容&#xff0c;有利于其他人更快速的获取信息。 目前文本静态码无法通过微信来扫码展示&#xff0c;那么想要解…

【unity小技巧】减少Unity中的构建打包大小

文章目录 正常默认打包查看编辑器打包日志压缩图片压缩网格模型压缩贴图压缩音频文件只打64位包最终大小完结 正常默认打包 这里以安卓为例。先什么都不干&#xff0c;直接打包安卓apk&#xff0c;查看包大小 查看编辑器打包日志 搜索build report构建报告。构建报告我们应该…

Nat Plants | 植物抽核单细胞!多组学探究大豆根瘤成熟过程

发表时间&#xff1a;2023-04 发表期刊&#xff1a;Nature Plants 影响因子&#xff1a;17.352 DOI&#xff1a;10.1038/s41477-023-01387-z 研究背景 根瘤菌是亲和互作寄主植物&#xff0c;感染宿主并在根部形成共生器官根瘤&#xff0c;具有固氮…

新手做抖店一般多久出单?想尽快出单需要做什么准备工作?

大家好&#xff0c;我是电商糖果 有不少刚开店的朋友&#xff0c;喜欢搜索&#xff0c;咨询多久出单的问题。 根据糖果做店四年多的经验来说&#xff0c;新手运营新店&#xff0c;只要操作思路正确&#xff0c;一般是一周左右就会出单&#xff0c;三到四周左右&#xff0c;店…

如何部署TDE透明加密实现数据库免改造加密存储

安当TDE&#xff08;透明数据加密&#xff09;实现数据库加密的步骤主要包括以下几个部分&#xff1a; 准备安装环境&#xff1a;确保操作系统和数据库环境已经安装并配置好&#xff0c;同时确保具有足够的权限来安装和配置TDE透明加密组件。下载安装包&#xff1a;从官方网站…

flutter开发实战-本地SQLite数据存储

flutter开发实战-本地SQLite数据库存储 正在编写一个需要持久化且查询大量本地设备数据的 app&#xff0c;可考虑采用数据库。相比于其他本地持久化方案来说&#xff0c;数据库能够提供更为迅速的插入、更新、查询功能。这里需要用到sqflite package 来使用 SQLite 数据库 预…

如何快速生成接口文档(swagger和knife4j两种方式及其使用)

如何快速生成接口文档&#xff08;swagger和knife4j两种方式&#xff09; 1、什么是接口文档&#xff1f; 在项目开发中&#xff0c;web项目的前后端分离开发&#xff0c;APP开发&#xff0c;需要由前后端工程师共同定义接口&#xff0c;编写接口文档&#xff0c;之后大家都根…

使用PyQt5设计订单查询界面—了解界面布局2

想要实现的界面效果 增加Tab Widge的页签 在MainWindow窗口中选中水平布局&#xff0c;将一个Label控件和一个默认自带两个页签的Tab Widget控件放到水平布局中&#xff0c;Tab Widget控件右键选择“插入页”再选择“在当前页之后”增加页签。 为每一个Tab页签界面都选择“栅格…

【小积累】@Qualifier注解

今天在看rabbitMQ的时候需要绑定交换机和队列&#xff0c;交换机和队列都已经注入到spring容器中&#xff0c;写了一个配置类&#xff0c;使用了bean注解注入的。所以这时候绑定的时候需要使用容器中的交换机和队列&#xff0c;必须要使用Qualifier去确定是容器中的哪个bean对象…

240W 宽电压输入 AC/DC 导轨式开关电源——TPR/SDR-240-XS 系列

TPR/SDR-240-XS 导轨式开关电源&#xff0c;额定输出功率为240W&#xff0c;产品输入范围&#xff1a;85-264VAC。提供24V、48V输出&#xff0c;具有短路保护&#xff0c;过载保护等功能&#xff0c;并具备高效率&#xff0c;高可靠性、高寿命、更安全、更稳定等特点&#xff0…

Uncaught InternalError: too much recursion

今天在敲代码的时候偶然间发现项目因为一次操作导致浏览器变得非常卡&#xff0c;而且控制台还报错了 Uncaught InternalError: too much recursior 页面截图如下 &#xff1a; 突如起来的报错和页面异常卡顿给我整不会了ovo&#xff0c;点开报错的地方&#xff0c;直接跳转到对…