Qt按键响应

信号与槽机制是一个非常强大的事件通信机制,是 Qt 最核心的机制之一,初学者掌握它之后,几乎可以做任何交互操作。

信号(Signal) 是一种“事件”或“通知”,比如按钮被点击、文本改变、窗口关闭等。
槽(Slot) 是一个“处理函数”,用于响应信号。

当信号发生时,自动调用连接的槽函数,实现逻辑响应。

简单的信号与槽构建示例

+-构建

如果你的栏布局与主包一样,如下

在黑框右键,点击“重置为默认布局”,就能出现如下“+”“-”号

点击“+”号,双击(<发送者>等)输入内容,示例为点击打开按钮,就关闭窗口 

点击要删除的命令,再点击“-”号就能删除

Edit Signals块

我觉得使用相对麻烦,就不详细介绍了,大家可以不学这种。

 点击符号后,将鼠标放在对象上会变红,点击要选择的信号发送者

点击后会由对象伸出一条红色的单项箭头,点击要选择的接收者,选择发送者发出的信号和接收者的响应操作

点击左边的Edit Widgets退出编辑操作

代码方式实现

ui+代码

右键按钮,点击“转到槽”

选择信号,点击“OK”

就跳转到了widget.cpp文件,会自动生成相关槽函数,.h文件也会增添相应声明

我们可以在槽函数里输出一句话(记得在.h文件增添头文件<iostream>),保存

点击“打开”按钮后出现如下输出

QObject::connect函数

在构造函数中进行信号与槽的绑定

打开widget.cpp,输入如下连接代码

QObject::connect(发送者,SIGNAL(检测信号),接收者,SLOT(超函数));

this代表这个窗口 ,SLOT()超函数需在头文件声明

函数实现

声明后右键函数,点击“Refactor”,点击“在widget.cpp中添加定义”

在跳转后的widget.cpp中的生成函数中输入如下代码

点击“关闭”按钮后,输出如下

 lambda表达式

也可以直接写lambda表达式,就不用声明函数了(是匿名函数),接收者this要不需要写,默认为窗体本身

点击“保存”键后输出如下

 使用函数指针

与使用connect函数构建相似,不再赘述,给出widget.cpp文件中的代码

QObject::connect(ui->Bclose,&QPushButton::clicked,this,&widget::on_fortch_clicked);

自定义信号与槽

先在.h头文件声明信号,声明槽(红杠处为添加部分) 

在.cpp文件中实现槽函数

QDebug输出

QDebug是Qt中用于输出调试信息的类,提供了一种方便的方式来输出文本到标准输出,返回一个QDebug对象,使用流操作符<<输出各种数据类型,与cout使用类似

需在.h中引入<QDebug>头文件

在.cpp的构造函数中连接信号与槽(connect前面可以声明QObject也可以不写,因为Widget是QObject的派生类,可使用基函数的成员函数)

再使用emit关键字触发信号,输出如下

带参数

.cpp代码如下

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);connect(this,SIGNAL(mysignal(int)),this,SLOT(myslot(int)));emit mysignal(100);
}Widget::~Widget()
{delete ui;
}void Widget::myslot(int value)
{qDebug()<<"myslot";qDebug()<<value;
}

运行结果如下

虽然我们约定信号与槽的形参要一样,但是参数不一样在Qt中其实也允许发生 

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

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

相关文章

【Git】常见命令整理

Git分区与操作关系&#xff1a;Working Directory&#xff08;工作区&#xff0c;对于本地的编辑和修改在此进行&#xff09;->Staging Area&#xff08;暂存区/Index&#xff0c;在工作区进行git add操作后的位置&#xff09;->Git Repository&#xff08;本地仓库&…

Linux-Shell脚本基础用法

1.变量定义变量命名规则&#xff1a;可以包含字母&#xff0c;数字&#xff0c;下划线&#xff0c;首字母不能用数字开头&#xff0c;中间不能又空格&#xff1b;为变量赋值等号之间不能为空格&#xff1b;变量命名不能使用标点符号&#xff0c;不能使用bash的关键字&#xff1…

JS中的Map和WeakMap区别和联系

JavaScript 中 Map 与 WeakMap 的区别、联系及示例核心区别特性MapWeakMap键的类型允许任意类型的键&#xff08;对象、原始值&#xff09;键必须是对象&#xff08;非原始值&#xff09;垃圾回收强引用键 → 阻止垃圾回收弱引用键 → 不影响垃圾回收可遍历性支持遍历&#xff…

Linux 环境 libpq加载异常导致psql 连接 PostgreSQL 库失败失败案例

文章目录局点现象定位结论局点环境补充知识点如下库文件加载顺序关键事实&#xff1a;您系统中的证据&#xff1a;优先级对比表&#xff1a;解决方案强化&#xff1a;最终检查&#xff1a;本局点解决方法局点现象 数据库 mdm 升级失败检查日志, 发现是由于 psql 连接数据库报错…

C# XML 文件

在 C# 中处理 XML 文件是非常常见的操作&#xff0c;可以使用System.Xml命名空间中的类来实现。以下是一些常用的 XML 操作示例&#xff1a; 手册链接&#xff1a; System.Xml 命名空间 XmlDocument 创建一个xml数据格式的文档 XmlDocument xml new XmlDocument(); Xml…

LOVON——面向足式Open-Vocabulary的物体导航:LLM做任务分解、YOLO11做目标检测,最后L2MM将指令和视觉映射为动作(且解决动态模糊)

前言 因为项目需要(比如我们在做的两个展厅讲解订单)&#xff0c;近期我一直在研究VLN相关&#xff0c;有些工作哪怕暂时还没开源(将来可能会开源)&#xff0c;但也依然会解读&#xff0c;比如好处之一是构建完整的VLN知识体系&#xff0c;本文便是其中一例 我在解读过程中&am…

【Django】-3- 处理HTTP响应

HttpResponse 家族” 的常用操作&#x1f31f;1. 设置状态码 &#x1f44b;状态码是服务器告诉客户端 “请求处理结果” 的数字暗号&#xff08;比如 404 表示 “没找到页面”&#xff09;。Django 里有 3 种设置方式&#xff1a;方式 1&#xff1a;直接写数字&#xff08;简单…

《React Router深解:复杂路由场景下的性能优化与导航流畅性构建》

路由系统是连接用户操作与应用功能的中枢神经,而React Router作为React生态中处理路由逻辑的核心工具,其在复杂应用中的表现直接决定着用户体验的优劣。当应用规模扩张至数十甚至上百个路由,嵌套层级跨越多层,导航控制中的性能问题便会逐渐凸显——从首屏加载的延迟到路由切…

网络与信息安全有哪些岗位:(4)应急响应工程师

想知道网络与信息安全领域有哪些具体岗位吗&#xff1f; 网络与信息安全有哪些岗位&#xff1a;&#xff08;1&#xff09;网络安全工程师-CSDN博客 网络与信息安全有哪些岗位&#xff1a;&#xff08;2&#xff09;渗透测试工程师_网络安全渗透工程师-CSDN博客 网络与信息安…

Leetcode 3634. Minimum Removals to Balance Array

Leetcode 3634. Minimum Removals to Balance Array 1. 解题思路2. 代码实现 题目链接&#xff1a;3634. Minimum Removals to Balance Array 1. 解题思路 这一题思路上就是一个滑动窗口的思路。 我们首先将整个数组有序排列&#xff0c;然后分别从左向右考察每一个元素作为…

C#/.NET/.NET Core优秀项目和框架2025年7月简报

前言 每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架&#xff08;每周至少会推荐两个优秀的项目和框架当然节假日除外&#xff09;&#xff0c;推文中有项目和框架的详细介绍、功能特点、使用方式以及部分功能截图等。注意&#xff1a;排名不分先后&#xff0c;都是十分…

第 10 篇:深度学习的“军火库”——CNN、RNN与Transformer,AI如何看懂世界?

《人工智能AI之机器学习基石》系列⑩ 专栏核心理念: 用通俗语言讲清楚机器学习的核心原理,强调“洞察 + 技术理解 + 应用连接”,构建一个完整的、富有启发性的知识体系。 引

深度学习—功能性函数代码 common.py

函数&#xff1a;返回GPU def try_gpu(i0): #save"""如果存在&#xff0c;则返回gpu(i)&#xff0c;否则返回cpu()"""if torch.cuda.device_count() > i 1: # 如果存在第 i 个 GPUreturn torch.device(fcuda:{i}) # 返回第 i 个 GPU 设…

南太平洋金融基建革命:斐济-巴新交易所联盟的技术破局之路 ——从关税动荡到离岸红利,跨境科技如何重塑太平洋资本生态

一、今日焦点&#xff1a;全球关税震荡与南太平洋的“技术联盟”机遇 1. 特朗普关税大限引爆亚太市场波动&#xff0c;小经济体承压寻路 2025年8月1日&#xff0c;特朗普正式签署行政令&#xff0c;对多国征收10%-41%的“对等关税”。韩国首当其冲&#xff0c;综合指数暴跌近4%…

python爬取豆瓣电影评论通用代码

最近在自学python爬虫&#xff0c;今天闲来无事&#xff0c;爬了一下豆瓣数据 这个网站对于初学者来说还是很友好的注意&#xff1a;有python环境的朋友运行的时候&#xff0c;要把cookie换成自己的 通用性&#xff1a;可以自己换不同的电影id进行数据爬取 Tip&#xff1a;slee…

构建属于自己的第一个 MCP 服务器:初学者教程

为什么需要 MCP 服务器&#xff1f; 你是否遇到过这样的场景&#xff1a;向 AI 助手&#xff08;比如 GitHub Copilot&#xff09;询问 “北京今天的天气”&#xff0c;得到的回复却是 “我无法访问实时天气数据”&#xff1f; 这是因为大多数 AI 模型本身 “与世隔绝”—— 它…

个人项目介绍:语音识别小助手

一、项目内容 基于STM32F103RCT6制作了一款集语音识别、按键控制、信息显示、温湿度监测等多功能于一体的智能设备&#xff0c;满足多样化的交互需求。 二、个人工作内容 依据项目需求&#xff0c;选定 STM32F103RCT6 单片机、SU-03T语音识别模组、AHT25 温湿度传感器等核心元件…

【Django】-1- 开发项目搭建

一、PDM Django 搭建项目&#x1f447;&#x1f3af; 核心目标用 PDM&#xff08;更现代的 Python 包管理工具&#xff09;&#xff0c;快速创建并管理 Django 项目&#xff08;Web 框架&#xff09;&#xff0c;让开发流程更丝滑✨&#x1f9e9; 分步拆解1. 创建项目用 PDM 初…

c++:设计模式训练

写一个鸟类&#xff1a;有一个多态函数&#xff1a;run 写一个企鹅类&#xff0c;继承自鸟类&#xff1a;重写 run 写一个鸵鸟类&#xff0c;继承自鸟类&#xff0c;重写 run 写一个老鹰类&#xff0c;继承自鸟类&#xff0c;重写run 写一个鸟笼&#xff0c;能够存放 不同的鸟…

配置Mybatis环境

配置Mybatis环境MyBatis是什么配置Mybatis环境MyBatis是什么 MyBatis 一个支持普通 SQL 查询、存储过程以及高级映射的持久层框架。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作&#xff0c;使得开发者可以更专注于 SQL 本身&#xff0c;而不必花费过多…