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

qt QAction详解

1、概述

QAction是Qt框架中的一个抽象类,用于表示用户界面中的一个动作(action)。这些动作可以绑定到菜单项、工具栏按钮或快捷键上,提供了一种灵活的方式来处理用户交互。QAction不仅包含了动作的名称、图标、提示信息等属性,还可以与特定的回调函数关联,当动作被触发时,执行相应的回调函数。

QAction是Qt信号与槽机制的一个典型应用,它允许开发人员将动作与用户界面元素解耦,从而更容易地管理和维护代码。通过使用QAction,开发人员可以创建一致的、可重用的用户界面元素,提升应用程序的可维护性和用户体验。

2、重要方法
  • setText(const QString &text):设置动作的文本标签。
  • setIcon(const QIcon &icon):设置动作的图标。
  • setShortcut(const QKeySequence &shortcut):设置动作的快捷键。
  • setStatusTip(const QString &statusTip):设置动作的状态提示信息,通常显示在状态栏中。
  • setToolTip(const QString &tip):设置动作的工具提示信息,当用户将鼠标悬停在动作上时显示。
  • setWhatsThis(const QString &text):设置动作的“这是什么”帮助信息,当用户按下Shift+F1并悬停在动作上时显示。
  • triggered(bool checked = false):这是一个信号,当动作被触发时发出。在子类中可以重写此方法以提供自定义行为。
  • connect():通常与triggered信号一起使用,将动作与特定的回调函数关联。

3、重要信号
  • triggered(bool checked = false):当动作被触发时发出此信号。如果动作是可检查的(checkable),则checked参数指示动作是否被选中。
#include <QApplication>  
#include <QMainWindow>  
#include <QMenuBar>  
#include <QToolBar>  
#include <QAction>  
#include <QMessageBox>  class MainWindow : public QMainWindow {  Q_OBJECT  public:  MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) {  // 创建菜单  QMenuBar *menuBar = this->menuBar();  QMenu *fileMenu = menuBar->addMenu(tr("&File"));  // 创建动作  QAction *newAction = new QAction(tr("&New"), this);  newAction->setIcon(QIcon(":/icons/new.png"));  newAction->setStatusTip(tr("Create a new file"));  connect(newAction, &QAction::triggered, this, &MainWindow::onNewFile);  QAction *openAction = new QAction(tr("&Open..."), this);  openAction->setIcon(QIcon(":/icons/open.png"));  openAction->setStatusTip(tr("Open an existing file"));  connect(openAction, &QAction::triggered, this, &MainWindow::onOpenFile);  // 将动作添加到菜单  fileMenu->addAction(newAction);  fileMenu->addAction(openAction);  // 创建工具栏  QToolBar *toolBar = this->addToolBar(tr("Main Toolbar"));  toolBar->addAction(newAction);  toolBar->addAction(openAction);  }  private slots:  void onNewFile() {  QMessageBox::information(this, tr("New File"), tr("Create a new file..."));  }  void onOpenFile() {  QMessageBox::information(this, tr("Open File"), tr("Open an existing file..."));  }  
};  int main(int argc, char *argv[]) {  QApplication app(argc, argv);  MainWindow window;  window.show();  return app.exec();  
}  

觉得有帮助的话,打赏一下呗。。

           

http://www.lryc.cn/news/474592.html

相关文章:

  • 建立maven项目常见问题解决办法
  • Windows 10 安装使用Docker踩过的坑和解决-31/10/2024
  • 微服务之间的调用关系
  • Chinese Spelling Correction as Rephrasing Language Model(AAAI2024)
  • DirectShow过滤器开发-写MP3音频文件过滤器(再写 写MP3)
  • 文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《基于对等架构的虚拟电厂-配电网双层电碳协同调度模型》
  • 大数据-204 数据挖掘 机器学习理论 - 混淆矩阵 sklearn 决策树算法评价
  • Fsm1
  • C. Gorilla and Permutation
  • 从0开始学python-day17-数据结构2
  • (蓝桥杯C/C++)—— 编程基础
  • 企业物流管理数据仓库建设的全面指南
  • 数据采集-Kepware 安装证书异常处理
  • ubuntu禁止自动更新设置
  • Rust 力扣 - 1461. 检查一个字符串是否包含所有长度为 K 的二进制子串
  • C#/.NET/.NET Core技术前沿周刊 | 第 11 期(2024年10.21-10.31)
  • unity 三维数学 ,角度 弧度计算
  • Java基础4-控制流程
  • 面试题分享11月1日
  • 【含文档】基于ssm+jsp的学科竞赛系统(含源码+数据库+lw)
  • Docker方式部署ClickHouse
  • 车载通信架构 --- PNC、UB与信号的关系
  • 智慧农业云平台:大数据赋能现代农业的未来
  • 【python】OpenCV—Tracking(10.4)—Centroid
  • 为什么TCP(TIME_WAIT)2倍MSL
  • jieba-fenci 05 结巴分词之简单聊一聊
  • Hadoop期末复习(完整版)
  • Python篮球王子
  • 分享一些在部署k8s集群时遇到的问题
  • 【Canal 中间件】Canal使用原理与基本组件概述