当前位置: 首页 > news >正文

【Qt开发】信号与槽

概述

在 Qt 中,用户和控件的每次交互过程称为⼀个事件。⽐如 “用户点击按钮” 是⼀个事件,“用户关闭窗口” 也是⼀个事件。每个事件都会发出⼀个信号,例如用户点击按钮会发出 “按钮被点击” 的信号,用户关闭窗口会发出 “窗口被关闭” 的信号。
Qt 中的所有控件都具有接收信号的能力,⼀个控件还可以接收多个不同的信号。对于接收到的每个信号,控件都会做出相应的响应动作。例如,按钮所在的窗口接收到 “按钮被点击” 的信号后,会做出 “关闭自己” 的响应动作;再如比输⼊框自己接收到 “输⼊框被点击” 的信号后,会做出 “显示闪烁的光标,等待用户输⼊数据” 的响应动作。在 Qt 中,对信号做出的响应动作就称之为槽。
信号和槽是 Qt 特有的消息传输机制,它能将相互独⽴的控件关联起来。⽐如,“按钮” 和 "窗⼝"本⾝是两个独⽴的控件,点击 “按钮” 并不会对 “窗口” 造成任何影响。通过信号和槽机制,可以将 “按钮” 和 “窗口” 关联起来,实现 “点击按钮会使窗口关闭” 的效果。

信号与槽的说明

  • 信号与槽底层是通过函数调用来实现的。每个信号都可以用函数来表示,称为信号函数;每个槽也可以用函数表示,称为槽函数。
  • 信号函数和槽函数通常位于某个类中,和普通成员函数相比:
  • 信号函数⽤ signals 关键字修饰,槽函数⽤ public slots、protected slots 或者 private slots 修饰。signals 和 slots 是 Qt 在 C++ 的基础上扩展的关键字,专门用来指明信号函数和槽函数;
  • 信号函数只需要声明,不需要定义(实现),而槽函数需要定义(实现)。

connect函数

QObject类提供一个静态成员函数connect(),该函数专门用来关联指定的信号函数和槽函数

举个简单的例子:在窗口中设置一个按钮,当点击按钮时关闭窗口

#include"widget.h"#include"ui_widget.h"#include<QPushButton>Widget::Widget(QWidget*parent):QWidget(parent),ui(newUi::Widget){ui->setupUi(this);QPushButton*button=newQPushButton(this);button->setText("close");connect(button,&QPushButton::clicked,this,&Widget::close);}Widget::~Widget(){deleteui;}
http://www.jsqmd.com/news/568146/

相关文章:

  • 从“画图焦虑”到“教学自由”:大角几何如何用AI解放数学教师
  • AI 时代:祛魅、适应与重新定义
  • Vivado时序约束实战:用Set_Bus_Skew解决跨时钟域数据同步的‘最后一公里’问题
  • XYCTF(Misc部分)
  • Python自动化办公翻车实录:用xlwings操作Excel时遇到-2146959355错误的5种修复方案
  • 筛选表单,支持增删改
  • 3步实现跨平台部署:开源CAD工具零障碍上手指南
  • 【力扣100题】10.回文链表(C++ 解法)
  • CBconvert:漫画爱好者的终极格式转换解决方案,支持10+格式互转
  • 描述 Linux 系统中 crontab 的工作原理,并给出一个每天凌晨 3 点执行备份脚本的 crontab 配置例子。
  • Phi-4-mini-reasoning vLLM监控告警:GPU显存溢出与请求超时自动通知
  • k8s网络Cilium5 - 小镇
  • Azure OpenAI服务升级踩坑记:从OpenAI库v0.27.0到v1.x,手把手解决LangChain中的404报错
  • Full Page Screen Capture:一键搞定超长网页截图的终极解决方案
  • 探索基于模型预测算法的含储能微网双层能量管理模型代码
  • 告别重复编码:用快马ai自动生成c语言基础工具模块提升效率
  • League-Toolkit英雄联盟智能工具完全攻略:从入门到精通
  • C++ Move 构造函数性能优化
  • Meld代码对比工具:安装配置与高效使用指南
  • SEO_ 为什么你的SEO没效果?关键原因与解决办法
  • YOLO-Master 与 YOLO 开始
  • Blender中GLB坐标转化及导出
  • 递归现象学方法论:自指悬置与本质直观的递归扩展【世毫九实验室原创理论】
  • 开箱即用!Qwen-Image-2512-SDNQ Web服务快速体验指南
  • 告别ALV展示难题:一个自研ABAP类搞定所有复杂内表(含嵌套表和结构)
  • 5大理由告诉你为什么Argos Translate是离线翻译的最佳Python解决方案 [特殊字符]
  • Godot-MCP:游戏开发智能协作框架的技术实现与架构解析
  • 通义千问3-Reranker-0.6B入门必看:32K长上下文+多语言嵌入重排全解析
  • 如何高效使用draw.io桌面版:完整实用指南
  • Cumulocity Arduino库:嵌入式MQTT轻量接入方案