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

qt QToolButton使用总结

  • QToolButton 是 Qt 中用于工具栏的专用按钮控件,支持图标、文本、下拉菜单、可切换状态等功能,适用于工具类操作。

1. 基本特性

与 QPushButton 的区别:
  • 更轻量级,专为工具栏设计。

  • 支持下拉菜单(setMenu())、自动提升(autoRaise)和多种显示模式(toolButtonStyle)。

  • 可设置为可切换状态(setCheckable(true))。


2. 常用方法

设置图标和文本:
toolButton->setIcon(QIcon(":/icon.png"));
toolButton->setText("Tool");
显示模式(Qt::ToolButtonStyle):
toolButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); // 图标下方显示文本
  • 可选值:IconOnly、TextOnly、TextBesideIcon、TextUnderIcon。
下拉菜单:
QMenu *menu = new QMenu;
menu->addAction("Option");
toolButton->setMenu(menu);
toolButton->setPopupMode(QToolButton::MenuButtonPopup); // 菜单触发模式
  • 弹出模式:

  • InstantPopup:点击立即弹出菜单。

  • MenuButtonPopup:显示菜单按钮,点击右侧箭头弹出。

  • DelayedPopup:长按后弹出(默认)。

下箭头类型:
toolButton->setArrowType(Qt::RightArrow); // 显示右箭头
可切换状态:
toolButton->setCheckable(true); // 按钮可保持按下/释放状态
自动提升(autoRaise):
toolButton->setAutoRaise(true); // 无边框,悬停时凸起

3. 信号与槽

  • 点击事件:
connect(toolButton, &QToolButton::clicked, this, &MyClass::handleClick);
  • 切换状态(可检查按钮):
connect(toolButton, &QToolButton::toggled, this, &MyClass::handleToggle);

4. 与 QToolBar 配合

  • 添加到工具栏:
QToolBar *toolBar = new QToolBar;
toolBar->addWidget(toolButton); // 直接添加控件
// 或通过 QAction 添加
QAction *action = new QAction("Save", this);
toolBar->addAction(action); // 自动生成 QToolButton

5. 样式自定义

  • 使用样式表:
toolButton->setStyleSheet(
  "QToolButton { border: 1px solid gray; }"
  "QToolButton::menu-button { background: lightgray; }"
);
---
### 6. 示例代码
~~~c++
QToolButton *btn = new QToolButton;
btn->setIcon(QIcon(":/save.png"));
btn->setText("Save");
btn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
btn->setCheckable(true);

QMenu *menu = new QMenu;
menu->addAction("Save As");
btn->setMenu(menu);
btn->setPopupMode(QToolButton::MenuButtonPopup);

connect(btn, &QToolButton::clicked, this, &MyClass::save);

7. 常见场景

  • 绘图软件中的工具切换(如画笔、橡皮擦)。

  • 带下拉选项的按钮(如“保存”按钮包含“另存为”)。

  • 可切换状态的工具(如粗体/斜体)。


8. 注意事项

  • 父容器(如 QToolBar)可能覆盖 toolButtonStyle,需在容器中统一设置。

  • 使用 QAction 管理按钮状态(图标、文本、快捷键)更高效。

  • 不同平台的默认样式可能不同,建议用样式表统一外观。


  • 通过合理使用 QToolButton,可以创建专业且用户友好的工具栏界面。

相关文章:

  • qt中部件存储自定义数据
  • 《网络编程卷2:进程间通信》第四章:管道与FIFO深度解析
  • Spring Boot(8)深入理解 @Autowired 注解:使用场景与实战示例
  • 面试经典150题——位运算
  • 本地部署DeepSeek集成VSCode创建自己的AI助手
  • 国内 网络安全沙箱
  • IC-Portrait:打造逼真个性化肖像的新纪元!
  • 什么是AI Agent、Chat、RAG、MoE
  • http 模块
  • 网络安全协议之比较(SSH、PKI、SET、SSL)
  • 宏基传奇swift edge偶尔开机BIOS重置
  • kafka了解-笔记
  • 【React】组件通信
  • vsftpd 配置项说明
  • AI 如何改变职场:从增强到重塑工作的未来
  • C++基础 | 线程`std::thread`
  • VoIP之音视频会议中的混音技术
  • LeetCode 1552.两球之间的磁力:二分查找
  • Humanoid Robot Price Break 人形机器人价格突破
  • NO.14十六届蓝桥杯备战|switch语句|break|default|2道练习(C++)
  • 凤阳鼓楼脱落瓦片2023年刚经历修复,凤阳县文旅局长回应是否违建等焦点问题
  • 北师大发布《短视频家长指南》,回应短视频时代家庭教育挑战
  • 墨海军训练舰在纽约撞桥,墨总统:对遇难者表示悲痛,将跟进调查
  • 一周观展|一批重量级考古博物馆开馆:从凌家滩看到孙吴大墓
  • 盐城经济技术开发区党工委书记王旭东接受纪律审查和监察调查
  • 俄乌直接谈判结束,乌称“毫无成果”