当前位置: 首页 > 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.hskmm.com/?act=detail&tid=20737

相关文章:

  • Gitee:中国开发者生态的数字化转型加速器
  • 大模型提示词技巧Prompt Engineering,看这一篇就够了 - 知乎
  • sg.测试 PySimpleGUI 取值方法
  • Gitee DevOps:本土化基因驱动中国企业研发效能革命
  • 快速查看Navicat数据库连接密码实战
  • 老旧系统接入统一认证
  • 每周读书与学习-初识JMeter 元件(三)
  • Playwright MCP浏览器自动化全攻略
  • 【IEEE出版、连续3届稳定EI检索】第四届能源互联网及电力系统国际学术会议(ICEIPS 2025)
  • 大内容 Python动漫信息管理系统 Django+Echarts 类型饼图 折线图分析 后台管理 智能推荐(源码)✅
  • 划分子网与连通性
  • Python 之创建虚拟目录
  • 深入解析:从“硬件能力比拼”到“生活价值交付”,方太智慧厨房重构行业竞争内核
  • 题解:CF1548E Gregor and the Two Painters
  • Gitee DevOps:重塑中国软件开发效率的新范式
  • Gitee:中国开发者生态的崛起与数字化转型新动能
  • 悟空博弈框架深度研究:从技术架构到商业应用的全景分析——声明ai研究
  • 油猴脚本-自动刷新网页
  • PostgreSQL数据库查询表是否被锁,以及解锁表的办法
  • 用信号量机制实现互斥,同步,前驱
  • 详细介绍:HDFS和MapReduce——Hadoop的两大核心技
  • 【AI 哲学思考】从大模型演进到生命隐喻:个性、极限与先天后天之问
  • 【AI 哲学思考】记忆的形态:从人脑到 AI 的存储之问
  • ISP DMA TEST
  • 三脚电感在报警器芯片里的实际作用与用法
  • 洛谷题单指南-进阶数论-P5091 【模板】扩展欧拉定理
  • jenkins maven nacos springboot profile实现多环境配置
  • RAG is really dead? 大模型和知识之间的桥梁没了? - spader
  • opencv学习记录4
  • 深入解析:Java-136 深入浅出 MySQL Spring Boot @Transactional 使用指南:事务传播、隔离级别与异常回滚策略