news 2026/6/18 4:02:09

20.QT QPushButton 全部信号详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
20.QT QPushButton 全部信号详解

QPushButton,所有按钮信号都继承自父类QAbstractButton,另外还继承QWidgetQObject的通用信号。

一、按钮核心业务信号(最常用,来自 QAbstractButton)

1.void clicked(bool checked = false)

  • 触发:鼠标在按钮内按下+松开、快捷键触发、代码调用click()/animateClick()
  • 参数:按钮设置setCheckable(true)时,checked代表当前选中状态;普通按钮参数默认无意义
connect(ui->pushButton, &QPushButton::clicked, this, &MainWindow::onClick);

2.void pressed()

  • 触发:鼠标左键刚按下按钮瞬间,还没松开就触发
  • 适用场景:长按功能、按住持续执行操作(如拖动、连续加减数值)
connect(ui->pushButton, &QPushButton::pressed, this, &MainWindow::onPressed);

3.void released()

  • 触发:鼠标左键松开按钮时触发(无论按下后鼠标是否移出按钮区域)
  • 适用场景:按住松手后收尾逻辑

4.void toggled(bool checked)

  • 触发:仅可选中按钮(setCheckable(true))切换选中/取消状态时触发
  • clicked区别:clicked每次点击都会发;toggled只有状态真的改变才会发
  • 参数checked:true=选中,false=取消选中
ui->pushButton->setCheckable(true); // 开启可切换 connect(ui->pushButton, &QPushButton::toggled, this, &MainWindow::onToggle);

二、继承自 QWidget 的通用界面信号(按钮也能用)

  1. void customContextMenuRequested(const QPoint &pos)
    右键点击按钮时触发,pos 是鼠标坐标,用于弹出右键菜单。
  2. void windowTitleChanged(const QString &title)
    窗口标题变化(按钮自身无窗口,基本不用)
  3. void windowIconChanged(const QIcon &icon)
  4. 鼠标/焦点类通用信号(所有控件都有):
    • void enterEvent()/void leaveEvent()鼠标移入/移出
    • void focusInEvent()/focusOutEvent()获取/失去焦点

三、继承自 QObject 的生命周期信号

void destroyed(QObject *obj = nullptr)
按钮对象被销毁时触发,用于资源清理。

四、信号使用场景对比

信号

使用场景

clicked()

绝大多数普通点击功能(弹窗、提交、跳转)

pressed()

长按连续操作、按下瞬间反馈

released()

松手后执行逻辑

toggled()

开关按钮、复选式按钮(开启/关闭功能)

连接示例

// 按下瞬间 connect(ui->pushButton, &QPushButton::pressed, this, [=](){ qDebug() << "按钮被按住了"; }); // 松开 connect(ui->pushButton, &QPushButton::released, this, [=](){ qDebug() << "松开按钮"; }); // 开关按钮状态切换 ui->pushButton->setCheckable(true); connect(ui->pushButton, &QPushButton::toggled, this, [=](bool ck){ if(ck) qDebug() << "开启"; else qDebug() << "关闭"; });
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/18 3:58:59

【雷达发射机设计】 第16章 分布式相参发射与协同探测

第16章 分布式相参发射与协同探测 16.1 破冰:为什么多架雷达协同比单架更强 想象一个场景:敌方隐身战机从海岸线渗透,单部雷达的探测距离因为隐身设计而缩短到一百公里以内。但如果沿海岸线部署五部雷达,每部雷达各自发射信号,在目标处实现相干叠加,等效辐射功率提升二十…

作者头像 李华
网站建设 2026/6/18 3:47:49

xapofx1_5.dll 找不到导致游戏音效异常?DirectX 音频组件这样修

在使用电脑时&#xff0c;如果看到“缺少 xapofx1_5.dll 文件&#xff0c;无法启动程序”或“找不到 xapofx1_5.dll”这类提示&#xff0c;很多人第一反应是去网上下载同名 DLL。其实 xapofx1_5.dll 通常和 DirectX 音频特效组件 有关&#xff0c;可能影响 老游戏、单机游戏、模…

作者头像 李华
网站建设 2026/6/18 3:43:51

自动对焦学习-4

自动对焦系统中的 Zoom、Focus 和标定表到底是什么&#xff1f;一文讲清它们之间的关系 一、前言 在做工业相机、机器视觉、电动变焦镜头或者自动对焦设备时&#xff0c;经常会遇到几个关键词&#xff1a; ZoomFocus自动对焦Zoom-Focus 曲线标定表Zoom Tracking 这些词看起来都…

作者头像 李华
网站建设 2026/6/18 3:34:41

深度解析:Awesome Claude Skills架构优化与高级技能开发实践

深度解析&#xff1a;Awesome Claude Skills架构优化与高级技能开发实践 【免费下载链接】awesome-claude-skills A curated list of awesome Claude Skills, resources, and tools for customizing Claude AI workflows 项目地址: https://gitcode.com/GitHub_Trending/aw/a…

作者头像 李华