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

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,可以创建专业且用户友好的工具栏界面。

http://www.kler.cn/a/546554.html

相关文章:

  • TDengine 客户端连接工具 taos-Cli
  • 网络中的传输介质
  • 【开源免费】基于SpringBoot+Vue.JS商品秒杀系统(JAVA毕业设计)
  • 信息收集-Web应用搭建架构指纹识别WAF判断蜜罐排除开发框架组件应用
  • C# 鼠标点击ToolStripStatuslabel 在线修改Text属性并存储加载显示Text属性
  • 自然语言处理中的百度中文词向量模型及其用法
  • Go语言 Web框架Gin
  • Excel常用操作
  • Ollama + DeepSeek + Dify私有化部署自己的AI Agent
  • 前端面试大全
  • 设置ollama接口能外部访问
  • C++ 的时间库之一:C 语言传统
  • 什么是耐环境环形光源
  • 一个让Stable Diffusion更稳定、更易用的Github开源项目
  • 以SpringBoot+Vue分布式架构商城系统为例,讲解订单生命周期的管理
  • 数据处理中多线程功能的设计逻辑,及python的多线程实现
  • 解锁UniApp新姿势:巧用阿里巴巴字体图标库
  • Ubuntu22.04 使用useradd 创建用户时,没有创建家目录时,如何手动创建家目录
  • 2.14寒假
  • 使用DeepSeek建立一个智能聊天机器人0.08