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

QAction的使用

QAction

配合 QMenu 使用

可以通过 AddAction 加入 QMenu

   auto action = new QAction("Test");action->setCheckable(true);auto menu = new QMenu(this);menu->addAction(action);setContextMenuPolicy(Qt::CustomContextMenu);connect(this, &MainWindow::customContextMenuRequested, this,[=](const QPoint &pos){auto globalPos = this->mapToGlobal(pos);menu->exec(globalPos);});connect(action, &QAction::toggled, this, [](){qDebug() << "Test Action toggled";});connect(action, &QAction::triggered, this, [](){qDebug() << "Test Action triggered";});
  • QAction::toggled信号只有当QActio::isChecked()状态变化时才会触发。

单个 QAction 对应多个控件

如下所示,菜单栏,右键菜单以及 QToolButton 共同使用同一个 action ,在需要多个按钮相同功能时,并且需要状态同步时,可以使用 QAction 统一管理

    auto action = new QAction("Test");action->setCheckable(true);auto menu = new QMenu(this);menu->addAction(action);ui->menu->addAction(action);ui->toolButton->setDefaultAction(action);setContextMenuPolicy(Qt::CustomContextMenu);connect(this, &MainWindow::customContextMenuRequested, this,[=](const QPoint &pos){auto globalPos = this->mapToGlobal(pos);menu->exec(globalPos);});connect(action, &QAction::toggled, this, [](){qDebug() << "Test Action";});
  • isChecked()、 isVisible(), 以及 isEnabled() 状态会自动同步
  • setText、setIconText,会自动更新到按钮上。

注意

QAction并不是一个QWidget

  • menu->addAction(action);, 会将 menu,加入 associatedObjects 中。
  • QToolBar::addAction, 会创建一个 QToolButton , 加入 associatedObjects 中,由QToolButton负责实际显示样式,QAction 主要负责显示状态的同步,以及触发动作等。
  • Qt6 之前可以使用 associatedWidgets
http://www.gsyq.cn/news/13901.html

相关文章:

  • flow.tcl
  • sg.测试 PySimpleGUI 取值方法
  • 剥开参数看本质:2025 年手机性能与处理器深度解析 - 详解
  • HT-SBTC-2-10L 是成都恒利泰推出的 5–1000 MHz
  • Gitee DevOps:本土化基因驱动中国企业研发效能革命
  • 每周读书与学习-初识JMeter 元件(三)
  • 划分子网与连通性
  • Gitee:中国开发者生态的崛起与数字化转型新动能
  • 详细介绍:HDFS和MapReduce——Hadoop的两大核心技
  • 完整教程:大模型agent综述:A Survey on Large Language Model based Autonomous Agents
  • 三脚电感在报警器芯片里的实际作用与用法
  • jenkins maven nacos springboot profile实现多环境配置
  • 互斥锁和信号量机制
  • 深度学习项目全流程实践与核心技术解析:从数据处理到模型优化 - 教程
  • 直接使用的NLog帮助类
  • 【每日一面】setTimeout 延时为 0 的情况
  • honeywell扫码枪设置
  • Python3 pip 详解
  • 不同网络间文件互传怎么实现?
  • sway wayland下 wps-office无法输入中文
  • Spring XML 设置简介
  • 术语俗话 --- 什么是mib
  • 分享一个YTB视频下载器
  • 基于Python+Vue开发的家具商城管理系统源码+运行步骤
  • Arraylist集合原理分析
  • 免费开源的百度文库平替!支持多格式文档预览与存储!
  • 写假数据
  • 详细介绍:Spring MVC 请求执行流程详解
  • Aduro电涌保护器特惠:6口插座与2USB端口52%折扣
  • centos 网卡IPv6配置