【Qt】QPushButton 与 QAction 的区别

1. QPushButton

  • QPushButton 是一个界面控件,能显示到界面上的。
  • QPushButtonQWidget的一个子类,是一个表示按钮的界面控件。
  • 它用于在GUI中提供一个标准的按钮,用户可以点击它来触发一个即时的动作或命令。
  • 按钮可以显示文本、图标或两者都有,并且可以被设置为不同的状态(如可按、不可按)。
  • QPushButton 通常用于表单、对话框、工具栏和其他需要用户直接与之互动以触发特定动作的地方。
  • 代码
QPushButton *button = new QPushButton("Click Me");
connect(button, &QPushButton::clicked, this, &MyClass::handleButtonClick);

2. QAction

  • QAction表示一个应用中的动作或命令,它本身不是一个UI控件,而是一种可以在多个地方重用的抽象动作表示。
  • 通过将QAction对象关联到菜单项、工具条按钮或快捷键,你可以在不同的上下文中提供相同的命令。
  • 这样,当动作的状态(如启用/禁用、选中/未选中)发生变化时,所有关联到这个动作的界面元素都会相应地更新状态,从而实现了界面元素之间的一致性并减少了代码重复。
  • 代码
QAction *action = new QAction(QIcon(":/icons/icon.png"), "Action", this);
connect(action, &QAction::triggered, this, &MyClass::handleActionTriggered);
toolbar->addAction(action);
menu->addAction(action);

3. 总结

用途

  • QPushButton通常在用户需要点击按钮来触发某个操作时使用,属于具体的界面控件;
  • QAction表示的是一个可在多个地方重用的抽象动作或命令,可以与多种触发方式相关联,如菜单项、工具栏按钮和快捷键。

用户界面

  • QPushButton是一个可视化的界面元素,直接显示在GUI中;
  • QAction本身不提供可视化界面,需要被绑定到一个或多个UI元素上(如QMenuQToolBar)来进行展示。

功能复用

  • QAction便于在多个地方重用相同的动作逻辑,
  • QPushButton通常用于实现单一的、独立的界面按钮。

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

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

相关文章

为什么要将Modbus转成MQTT

什么是Modbus Modbus 是一种串行通信协议,最初由Modicon(现在的施耐德电气Schneider Electric)于1979年开发,用于可编程逻辑控制器(PLC)之间的通信。Modbus协议设计简单,易于部署和维护&#xf…

从零入手人工智能(2)——搭建开发环境

1.前言 作为一名单片机工程师,想要转型到人工智能开发领域的道路确实充满了挑战与未知。记得当我刚开始这段旅程时,心中充满了迷茫和困惑。面对全新的领域,我既不清楚如何入手,也不知道能用人工智能干什么。正是这些迷茫和困惑&a…

用Python实现奇怪的疯狂按键需求

项目背景 说起来好笑,假设有一个奇怪需求 — 仅仅是假设,不代表我有这个需求,虽然可以想象有人会有这个需求,但是这个人不是我,我也不认识任何这样的人 — 疯狂向某个程序输出按键,比如,一会儿疯狂输入f,一会儿疯狂输入q。 如果是两个按键需求,我想要设置一个最简单…

M1Pro 使用跳板机

Mac (M1 Pro) 通过Iterm2 使用跳板机 1、由于堡垒机(跳板机)不能支持mac系统终端工具,只支持xshell等win生态。所以我们需要先安装iterm2 装iterms教程 这里头对rz、sz的配置不详细。我们可以这样配置: where iterm2-send-zmod…

Windows 11中删除分区的几种方法,总有一种适合你

序言 想从Windows 11 PC中删除一个分区,以便将空间重新分配给现有分区或创建一个新分区吗?我们将为你介绍删除Windows 11分区的多种方法。 删除Windows上的分区时会发生什么 删除分区时,Windows会擦除该分区的内容,并将该分区从电脑上的任何位置删除。你将丢失保存在该分…

Github 2024-06-05 C开源项目日报 Top10

根据Github Trendings的统计,今日(2024-06-05统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量C项目10C++项目2Python项目1我的电视 - 安卓电视直播软件 创建周期:40 天开发语言:CStar数量:649 个Fork数量:124 次关注人数:649 人贡献人…

单元测试覆盖率

什么是单元测试覆盖率 关于其定义,先来看一下维基百科上的一段描述: 代码覆盖(Code coverage)是软件测试中的一种度量,描述程序中源代码被测试的比例和程度,所得比例称为代码覆盖率。 简单来理解&#xff…

C语言实现map数据结构 key—value对应

1.首先43行 createKeyValuePair(char*key ,int value)这个函数就是给一个keyValuePair *pair的指针来通过内存分配将数据key和value存入这个pair指针所对应的内存空间 2.52行freeKeyValuePair这个函数是释放内存空间 3.头文件 struct结构体KeyValuePair就是一个指针一个值 4…

GO语言 服务发现概述

https://zhuanlan.zhihu.com/p/32027014 明明白白的聊一下什么是服务发现-CSDN博客 一、服务发现 是什么 在传统的系统部署中,服务运行在一个固定的已知的 IP 和端口上,如果一个服务需要调用另外一个服务,可以通过地址直接调用。 但是&…

软件巨头SAP裁员优厚条件,吸引5300名员工争相离职

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 在科技行业的大潮中,SAP公司近日因一项颇具争议的裁员计划而备受瞩目。但这次裁员风波并未如往常般引发员工的强烈抗议,反…

D365 子窗体调用父窗体方法

文章目录 一、在子窗体中调用父窗体公共方法二、刷新 CallerForm 数据源 一、在子窗体中调用父窗体公共方法 Object callerForm element.args().caller(); if(callerForm is FormRun && formHasMethod(callerForm, identifierStr(parentMethod))) {callerForm.parent…

知网-数学学习与研究-收稿邮箱

知网-数学学习与研究-收稿邮箱 《数学学习与研究》杂志是由东北师范大学主管,吉林省数学会与东北师范大学出版社联合主办的省级优秀数学类期刊杂志。 主管单位:东北师范大学 主办单位:吉林省数学会;东北师范大学数学与统计学院 创刊时间1983…

AI学习指南机器学习篇-决策树基本原理

AI学习指南机器学习篇-决策树基本原理 在机器学习领域,决策树是一种常见且十分重要的算法。它不仅在分类任务中被广泛应用,还可以用于回归任务。本篇博客将详细介绍决策树的基本原理,包括节点、分裂准则、信息增益、基尼不纯度等概念&#x…

msvcr120.dll丢失怎样修复?为什么msvcr120.dll文件很重要

msvcr120.dll​ 是一个属于 Microsoft Visual C 2013 Redistributable package 的动态链接库文件。这个文件对于运行使用 Visual Studio 2013 开发的应用程序是必要的,因为它包含了C运行时库的一部分功能,这些功能是标准C库中与输入/输出操作、字符串操作…

OpenCV中的圆形标靶检测——斑点检测算法(二)

前面的章节中我们已经大致介绍了算法流程,也对一些算法中用到的相关概念做了简要介绍,同时给出了算法调用的API,现在我们开始算法检测接口实现源码的分析。 1. 斑点的分组与加权 这里我们选择后者,先了解算法的处理流程,再分析各个模块的实现。算法流程图如下图所示,上一…

android中调用onnxruntime框架

创建空白项目 安装Android Studio及创建空白项目参考:【安卓Java原生开发学习记录】一、安卓开发环境的搭建与HelloWorld(详细图文解释)_安卓原生开发-CSDN博客 切记:build configuration language 一定选择Groovy!官…

51单片机-LCD液晶显示

目录 前言: 一. LCD1602模块简介 二. 代码功能实现 三.总结 前言: 本文主要是51单片机的LCD液晶显示,使用的是LCD1602.下面是详细介绍和完整代码,欢迎大家的点赞,评论和关注.感谢. 一. LCD1602模块简介 LCD1602 模块具有以下特点: 显示特点: 可以…

MySQL 将null转0 ifnull() coalesce()

做统计报表的时候,有时候不希望查出来的值是null,因为在代码中需要做大量的判空,最后转换成0来处理。既然如此,那在sql中查出来就是0,就不用为空而去判空了。 1.IFNULL() ifnull()只能放2个值。 select IFNULL(null,0…

[240608] Zig 发布 v0.13.0 |AMD 新处理器不支持 Win 10 |DuckDuckgo 发布AI匿名聊天服务

目录 Zig 发布 0.13.0 版本AMD 下一代锐龙处理器不支持 Windows 10DuckDuckgo 发布 AI 匿名聊天服务 Zig 发布 0.13.0 版本 Zig 发布 0.13.0 版本,此次发布的主要目的是升级 zig 工具链,发布重点如下: 工具链升级: LLVM&#xf…

DevOps的原理及应用详解(六)

本系列文章简介: 在当今快速变化的商业环境中,企业对于软件交付的速度、质量和安全性要求日益提高。传统的软件开发和运维模式已经难以满足这些需求,因此,DevOps(Development和Operations的组合)应运而生&a…