【Qt | QAction】Qt 的 QAction 类介绍

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀
🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C++、数据结构、音视频🍭
🤣本文内容🤣:🍭介绍 🍭
😎金句分享😎:🍭你不能选择最好的,但最好的会来选择你——泰戈尔🍭
⏰发布时间⏰:

本文未经允许,不得转发!!!

目录

  • 🎄一、概述
  • 🎄二、QAction 构造方法和属性方法
    • ✨2.1 构造方法
    • ✨2.2 属性方法
  • 🎄三、信号(Signals)、槽(Slots)
    • ✨3.1 信号(Signals)
    • ✨3.2 槽(Slots)
  • 🎄四、总结


在这里插入图片描述
在这里插入图片描述

🎄一、概述

QAction类提供了一个抽象的用户界面操作,可以插入到小部件(widgets)中。

在应用程序中,可以通过菜单(menus)、工具栏按钮(toolbar buttons)和键盘快捷键(keyboard shortcuts)调用许多常用命令。由于用户希望以相同的方式执行每个命令,而不管使用的用户界面是什么,因此将每个命令表示为动作(action)是有用的。

动作(Action)可以添加到菜单和工具栏,并将自动保持同步。例如,在文字处理程序中,如果用户按下“粗体”工具栏按钮,将自动选中“粗体”菜单项。

动作(Action)可以作为独立对象创建,但也可以在菜单构建过程中创建;QMenu类包含方便的函数,用于创建适合作为菜单项使用的操作。

QAction可能包含一个图标、菜单文本、快捷方式、状态文本、“What’s This?”文本和一个工具提示。其中大多数可以在构造函数中设置。它们也可以通过setIcon()、setText()、setIconText()、setShortcut()、setStatusTip()、setWhatsThis()和setToolTip()独立设置。对于菜单项,可以使用setFont()设置单独的字体。

使用QWidget::addAction()QGraphicsWidget::addAction()将动作添加到小部件(widgets)中。注意,在使用小部件(widget)之前,必须向其添加操作;用作快捷方式时(即Qt::ApplicationShortcutQt::ShortcutContext)也应该这样做,并且快捷方式应该是全局的。

创建QAction后,应该将其添加到相关菜单和工具栏中,然后连接到执行该操作的槽。例如:

const QIcon openIcon = QIcon::fromTheme("document-open", QIcon(":/images/open.png"));
QAction *openAct = new QAction(openIcon, tr("&Open..."), this);
openAct->setShortcuts(QKeySequence::Open);
openAct->setStatusTip(tr("Open an existing file"));
connect(openAct, &QAction::triggered, this, &MainWindow::open);
fileMenu->addAction(openAct);
fileToolBar->addAction(openAct);

我们建议将操作创建为使用它们的窗口的子窗口。在大多数情况下,操作(Action)将是应用程序主窗口(main window)的子窗口。


在这里插入图片描述

🎄二、QAction 构造方法和属性方法

✨2.1 构造方法

QAction(QObject *parent = nullptr);
QAction(const QString &text, QObject *parent = nullptr);
QAction(const QIcon &icon, const QString &text, QObject *parent = nullptr);

✨2.2 属性方法

文本和图标:

QString text() const
获取动作的文本标签。void setText(const QString &text)
设置动作的文本标签。QIcon icon() const
获取动作的图标。void setIcon(const QIcon &icon)
设置动作的图标。QString iconText() const
获取动作的图标文本void setIconText(const QString &text)
设置动作的图标文本

状态:

bool isCheckable() const
返回动作是否可选中void setCheckable(bool)
设置动作可否选中bool isChecked() const
返回动作是否被选中(适用于复选框)。void setChecked(bool checked)
设置动作的选中状态。bool isEnabled() const
返回动作是否可用。void setEnabled(bool enabled)
启用或禁用该动作。

快捷键:

QString shortcut() const
获取动作的快捷键。void setShortcut(const QKeySequence &shortcut)
设置动作的快捷键。void setShortcutContext(Qt::ShortcutContext context)void setShortcutVisibleInContextMenu(bool show)void setShortcuts(const QList<QKeySequence> &shortcuts)void setShortcuts(QKeySequence::StandardKey key)QKeySequence shortcut() constQt::ShortcutContext shortcutContext() constQList<QKeySequence> shortcuts() const

在这里插入图片描述

🎄三、信号(Signals)、槽(Slots)

✨3.1 信号(Signals)

  • void changed()
    

    该信号在动作发生变化时发出。如果您只对给定小部件中的操作感兴趣,您可以监视QWidget::actionEvent()发送的QEvent::ActionChanged
    注意:
    autoRepeat属性的通知信号。
    checkable属性的通知信号。
    enabled属性的通知信号。
    font属性的通知信号。
    icon属性的通知信号。
    iconText属性的通知信号。
    iconVisibleInMenu属性的通知信号。
    menuRole属性的通知信号。
    shortcut属性的通知信号。
    shortcutContext属性的通知器信号。
    shortcutVisibleInContextMenu属性的通知信号。
    statusTip属性的通知信号。
    text属性的通知信号。
    toolTip属性的通知信号。
    visable属性的通知信号。
    whatsThis属性的通知信号。

  • void hovered()
    

    当用户突出显示(highlighted)某个动作时,就会发出这个信号;例如,当用户将光标停在菜单选项、工具栏按钮或按下操作的快捷键组合时。

  • void toggled(bool checked)
    

    当一个使能了可选(checkable)的动作改变了它的isChecked()状态时,就会发出这个信号。这可能是用户交互的结果,也可能是因为调用了setChecked()。当setChecked()更改QAction时,除了toggle()之外,它还会发出changed()。

    如果Action被选中,则参数checked为true,如果Action未被选中,则参数checked为false。

    注意:checked属性的通知信号。

  • void triggered(bool checked = false)
    

    当一个动作被用户激活时,就会发出这个信号;例如,当用户单击菜单选项、工具栏按钮或按下操作的快捷键组合时,或者调用trigger()时。值得注意的是,当setChecked()或toggle()被调用时,它不会被触发。

    如果Action是可选的(checkable),则参数checked为true表示Action被选中,参数checked为false表示Action未被选中。


✨3.2 槽(Slots)

void hover()
这是一个很方便的槽,使action活跃(activate(Hover))void setChecked(bool)
设置动作的选中状态。void setDisabled(bool b)
设置动作未使能。void setEnabled(bool)
设置动作使能。void setVisible(bool)
设置动作可见void toggle()
这是一个用于checked属性的方便函数。连接到它以将 checked 的状态更改为相反的状态。void trigger()
触发动作,使action活跃(activate(trigger))

在这里插入图片描述

🎄四、总结

👉本文介绍了Qt的 QActioin 类,详细介绍了该类重要的信号、槽函数。

常用的方法总结

  1. QAction::QAction( const QString & text, QObject * parent )
    QAction类的构造函数之一,利用text,parent创建QAction对象。QAction对象一般为菜单中的菜单项,比如 “文件"菜单中"新建"选项就是一个QAction对象,上述构造函数中text成员变量即为菜单项所表示的内容。
    用法:QAction *newAction = new QAction(tr(”&New"),this);
  2. void QAction::setIcon ( const QIcon& icon )
    该函数可设置菜单项名称前的图标
    用法:newAction->setIcon(QIcon(“:/images/new.png”));
  3. void QAction::setShortcut ( const QKeySequence & shortcut );
    设置QAction对象执行的快捷键
    用法:newAction->setShortcut(tr(“Ctrl+N”));
  4. void QAction::setStatusTip ( const QString & statusTip );
    设置当鼠标移动到“动作”上时,状态栏显示的提示语。
  5. void QAction::setVisible ( bool );
    设置“动作”显示与否,当形参为true是,“动作”表示。
  6. void QAction::triggered ( bool checked = false ) [signal]
    此函数为信号,当用户触发此“动作”时,此信号发射。例如用户点击了菜单中的菜单项等。
    此函数一般用法为:在QObject::connect()函数中作为信号参数,用于触发“动作”所对应执行的槽函数——实现“动作”的功能函数,例如:“新建”按钮被用户按下,所需要的功能可能是新建一个文档,那么新建一个文档的动作就在这个槽函数中实现。至于此信号函数中的形参暂时可以忽略。以后会在介绍QObject类中的静态方法connect()函数时详细解说。
  7. void QAction::setCheckable ( bool );
    此函数用于设置QAction类中的私有变量: bool checkable ,此属性用以提供“动作”是否为复选动作,例如Qt Creator中“控件”菜单中的“全屏”菜单项即为复选动作菜单

🌰举例子:

#include <QApplication>
#include <QMainWindow>
#include <QMenuBar>
#include <QAction>
#include <QMessageBox>int main(int argc, char *argv[]) {QApplication app(argc, argv);QMainWindow window;// 创建 QActionQAction *action = new QAction("Show Message", &window);action->setIcon(QIcon::fromTheme("dialog-information")); // 设置图标action->setShortcut(QKeySequence("Ctrl+M"));              // 设置快捷键// 连接 triggered 信号QObject::connect(action, &QAction::triggered, []() {QMessageBox::information(nullptr, "Info", "Action triggered!");});// 创建菜单并添加 QActionQMenu *menu = window.menuBar()->addMenu("File");menu->addAction(action);window.resize(300, 200);window.show();return app.exec();
}

🌰例子2:使用Action构造工具栏和菜单栏

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{initMenu();initToolBar();
}
void MainWindow::initMenu()
{/* 初始化File菜单 */fileMenu = new QMenu(tr("File"), this);fileOpenAction = new QAction("&Open...", this);fileSaveAction = new QAction("&Save...", this);fileMenu->addAction(fileOpenAction);fileMenu->addAction(fileSaveAction);/* 初始化Edit菜单 */editMenu = new QMenu("&Edit");editCopyAction = editMenu->addAction("&Copy");editCutAction = editMenu->addAction("&Cut");/* 将菜单添加到菜单栏上 */QMenuBar *menuBar = this->menuBar();menuBar->addMenu(fileMenu);menuBar->addMenu(editMenu);
}
void MainWindow::initToolBar()
{/* 初始化FileToolBar */fileToolBar = new QToolBar(this);fileToolBar->addAction(fileOpenAction);fileToolBar->addAction(fileSaveAction);/* 初始化EditToolBar */editToolBar = new QToolBar(this);editToolBar->addAction(editCopyAction);editToolBar->addAction(editCutAction);/* 将工具添加到工具栏上 */addToolBar(Qt::TopToolBarArea, fileToolBar);addToolBar(Qt::TopToolBarArea, editToolBar);
}
MainWindow::~MainWindow()
{}

在这里插入图片描述
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁

参考:
《Qt assistant 文档》
https://blog.csdn.net/sinat_31608641/article/details/124898305
https://www.cnblogs.com/hehe001/archive/2013/05/05/6334433.html

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

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

相关文章

【Taro】初识 Taro

笔记来源&#xff1a;编程导航。 概述 Taro 官方文档&#xff1a;https://taro-docs.jd.com/docs/ &#xff08;跨端开发框架&#xff09; Taro 官方框架兼容的组件库&#xff1a; taro-ui&#xff1a;https://taro-ui.jd.com/#/ &#xff08;最推荐&#xff0c;兼容性最好&…

7.搭建个人金融数据库之快速获取股票列表和基本信息!

前边我们提过&#xff0c;免费的数据一般来自于爬虫&#xff0c;获取难度和维护成本都比较高&#xff0c;其实不太适合小白用户。所以非必要情况下&#xff0c;我们尽量不用这种方式来获取数据。 我自己用的比较多的是tushare&#xff0c;一般来说有它也就够了&#xff0c;大…

Python自动化-操作Excel

在数据处理和报表生成过程中&#xff0c;Excel是一个经常使用的工具。Python中的openpyxl库可以让您通过编程方式读取、写入和操作Excel文件&#xff0c;从而实现自动化的数据处理和报表生成。本文将介绍openpyxl库的基本用法和常见操作&#xff0c;帮助您快速上手使用Python处…

猿大师办公助手在线编辑Office为什么要在客户端电脑安装插件微软Office或金山WPS?

猿大师办公助手作为一款专业级的网页编辑Office方案&#xff0c;与在线云文档方案&#xff08;飞书、腾讯文档等&#xff09;不同&#xff0c;需要在客户端电脑安装猿大师办公助手插件及微软Office或者金山WPS软件&#xff0c;很多客户不理解为什么要这么麻烦&#xff0c;能否客…

Android RecyclerView 实现 GridView ,并实现点击效果及方向位置的显示

效果图 一、引入 implementation com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30 二、使用步骤 1.Adapter public class UnAdapter extends BaseQuickAdapter<UnBean.ResultBean, BaseViewHolder> {private int selectedPosition RecyclerView.NO_POSITIO…

VMWare虚拟机安装CentOS-7-x86_64-DVD-1611操作系统

VMWare虚拟机安装CentOS7操作系统 1、虚拟机准备打开VMware单机创建新的虚拟机典型与自定义安装选择虚拟机硬件兼容性选择安装程序光盘映射文件(iso)选择客户机操作系统命名虚拟机处理器配置内存配置网络连接类型I/O类型选择磁盘类型选择磁盘指定磁盘的最大磁盘大小磁盘名称我们…

SpringBoot权限认证-Sa-Token的使用与详解

本文详细介绍了Sa-Token在Java项目中的使用方法&#xff0c;包括Sa-Token的基本概念、与其他权限框架的比较、基本语法和高级用法&#xff0c;并通过实例讲解了如何在项目中集成和使用Sa-Token。作为一款轻量级Java权限认证框架&#xff0c;Sa-Token在简化权限管理、提高开发效…

战神5/战神:诸神黄昏/God of War Ragnarok(容量175GB)百度网盘下载

版本介绍 v1.0.612.4312|容量175GB|官方简体中文|支持键盘.鼠标.手柄|赠单板学习补丁 配置要求 战神5/战神&#xff1a;诸神黄昏/God of War Ragnarok 游戏介绍 不灭的北欧传奇 由Santa Monica Studio出品、Jetpack Interactive负责PC移植的佳作《God of War Ragnark》将带您…

【原创】java+swing+mysql仓库管理系统设计与实现

个人主页&#xff1a;程序员杨工 个人简介&#xff1a;从事软件开发多年&#xff0c;前后端均有涉猎&#xff0c;具有丰富的开发经验 博客内容&#xff1a;全栈开发&#xff0c;分享Java、Python、Php、小程序、前后端、数据库经验和实战 文末有本人名片&#xff0c;希望和大家…

SpringBootWeb响应

2. 响应 前面我们学习过HTTL协议的交互方式&#xff1a;请求响应模式&#xff08;有请求就有响应&#xff09; 那么Controller程序呢&#xff0c;除了接收请求外&#xff0c;还可以进行响应。 2.1 ResponseBody 在我们前面所编写的controller方法中&#xff0c;都已经设置了…

【MYSQL】聚合查询、分组查询、联合查询

目录 聚合查询聚合函数count()sum()avg()max()和min()总结 分组查询group by 子句having 子句 联合查询笛卡尔积内连接外连接自连接子查询单行子查询多行子查询from子句使用子查询 合并查询 聚合查询 聚合查询就是针对表中行与行之间的查询。 聚合函数 count() count(列名)&a…

对接阿里asr和Azure asr

1&#xff1a;对接阿里asr 1.1&#xff1a;pom <dependency><groupId>com.alibaba.nls</groupId><artifactId>nls-sdk-recognizer</artifactId><version>2.2.1</version> </dependency>1.2&#xff1a;生成token package c…

【动态规划】两个数组的 dp 问题二

两个数组的 dp 问题 1.正则表达式匹配2.交错字符串3.两个字符串的最小ASCII删除和4.最长重复子数组 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1…

创客匠人对话:创始人IP如何进阶?掌握这三点实现高质量多次转化

我们邀请到老蒋创客圈第67期对话标杆直播连麦&#xff0c;我们邀请到【君儒文化】平台创始人彭君如老师。从去年12月份参加创客匠人的线下大课后&#xff0c;就果断加入陪跑&#xff0c;到今年7月份顺利拿到68w的发售大结果。 前面我们介绍了彭老师的传承、发心愿景&#xff0…

小程序体验版无法正常请求接口,开启 调试可以正常请求

在本地开发工具可以正常访问小程序&#xff0c;上传代码后打开体验版&#xff0c;界面无法请求接口&#xff0c;手机小程序打开调试模式可以正常访问。这可以查看下小程序后台是否设置了服务器域名以及业务域名 然后查看小程序开发工具 - 详情 - 项目配置 重新上传代码&#xf…

二叉树的层序遍历(含八道leetcode相关题目)

文章目录 二叉树层序遍历模板102. 二叉树的层序遍历107. 二叉树的层序遍历 II199. 二叉树的右视图637. 二叉树的层平均值515. 在每个树行中找最大值429. N 叉树的层序遍历116. 填充每个节点的下一个右侧节点指针117. 填充每个节点的下一个右侧节点指针 II 二叉树层序遍历模板 …

240922-局域网内通过SSH与SFTP访问RHEL服务器

要通过SFTP&#xff08;安全文件传输协议&#xff09;在局域网内访问一台RHEL服务器&#xff0c;您需要确保以下步骤都已经正确完成&#xff1a; A. 在RHEL服务器上配置SFTP服务 RHEL默认通过sshd服务提供SFTP功能&#xff0c;SFTP使用SSH协议进行文件传输&#xff0c;因此需要…

【二等奖论文】2024年华为杯研赛D题成品论文(后续会更新)

您的点赞收藏是我继续更新的最大动力&#xff01; 一定要点击如下的卡片&#xff0c;那是获取资料的入口&#xff01; 点击链接获取【2024华为杯研赛资料汇总】&#xff1a; https://qm.qq.com/q/jTIeGzwkSchttps://qm.qq.com/q/jTIeGzwkSc 题 目&#xff1a; 大数据驱动的…

基于Ambari搭建hadoop生态圈+Centos7安装教程(还没写完,等明天补充完整)

当我们学习搭建hadoop的时候&#xff0c;未免也会遇见很多繁琐的事情&#xff0c;比如很多错误&#xff0c;需要解决。在以后公司&#xff0c;也不可能让你一个一个搭建hadoop&#xff0c;成千上万的电脑&#xff0c;你再一个个搭建&#xff0c;一个个报错&#xff0c;而且每台…

WebGL颜色与纹理

WEBGL中的着色器变量包括以下种类&#xff1a; 属性变量&#xff08;Attribute Variables&#xff09;&#xff1a;这些变量用于接收从应用程序中传递的顶点数据&#xff0c;比如顶点位置和颜色&#xff0c;是只读的不可修改。统一变量&#xff08;Uniform Variables&#xff…