qt QToolButton详解
1、概述
QToolButton是Qt框架中的一个控件,它继承自QAbstractButton。QToolButton通常用于工具栏(QToolBar)中,提供了一种快速访问命令或选项的方式。与普通的QPushButton按钮相比,QToolButton通常只显示一个图标而不显示文本标签(尽管也可以显示文本),并且通常没有边框,在鼠标悬停和按下时的视觉反馈较轻。QToolButton的主要用途是在工具栏中提供辅助操作,而不是用于触发主要命令。
2、重要方法
QToolButton提供了多种方法来配置其外观和行为,以下是一些常用的方法:
setMenu(QMenu *menu):设置按钮的弹出菜单。setPopupMode(ToolButtonPopupMode mode):设置弹出菜单的显示模式,包括延迟弹出(DelayedPopup)、点击箭头立即弹出(MenuButtonPopup)和点击按钮立即弹出(InstantPopup)。setToolButtonStyle(Qt::ToolButtonStyle style):设置按钮的样式,包括仅显示图标(ToolButtonIconOnly)、仅显示文本(ToolButtonTextOnly)、文本在图标右侧(ToolButtonTextBesideIcon)和文本在图标下方(ToolButtonTextUnderIcon)。setArrowType(Qt::ArrowType type):设置按钮是否显示一个箭头,而不是一个正常的图标。setIcon(const QIcon &icon):设置按钮的图标。setText(const QString &text):设置按钮的文本。setAutoRaise(bool enable):设置是否在鼠标指向按钮时自动凸起。
3、重要信号
QToolButton也提供了多种信号来响应用户交互,以下是一些常用的信号:
clicked(bool checked = false):当按钮被点击时触发,参数checked表示按钮的选中状态。triggered(QAction *action):当有菜单项被触发时发送,可以使用action参数来获取触发的菜单项。
4、常用枚举类型
QToolButton中定义了一些枚举类型来配置其行为和外观,以下是一些常用的枚举类型:
ToolButtonPopupMode:定义了工具按钮的弹出菜单模式,包括DelayedPopup(延迟弹出)、MenuButtonPopup(点击箭头图标后立即弹出)和InstantPopup(点击按钮后立即弹出)。ToolButtonStyle:定义了工具按钮的样式,包括ToolButtonIconOnly(仅显示图标)、ToolButtonTextOnly(仅显示文本)、ToolButtonTextBesideIcon(文本在图标右侧)和ToolButtonTextUnderIcon(文本在图标下方)。ArrowType:定义了按钮是否显示一个箭头,而不是一个正常的图标,包括NoArrow(不显示箭头)和其他箭头类型。
#include <QApplication>
#include <QMainWindow>
#include <QToolButton>
#include <QMenu>
#include <QVBoxLayout>
#include <QDebug>class MainWindow : public QMainWindow {Q_OBJECT
public:MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) {setupUI();}private:void setupUI() {// 创建中心部件和布局QWidget *centralWidget = new QWidget(this);QVBoxLayout *layout = new QVBoxLayout(centralWidget);setCentralWidget(centralWidget);// 创建基本工具按钮QToolButton *basicBtn = new QToolButton();basicBtn->setText("基本按钮");basicBtn->setIcon(QIcon(":/icons/basic.png"));basicBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);connect(basicBtn, &QToolButton::clicked, this, &MainWindow::onBasicButtonClicked);layout->addWidget(basicBtn);// 创建带菜单的工具按钮QToolButton *menuBtn = new QToolButton();menuBtn->setText("菜单按钮");menuBtn->setIcon(QIcon(":/icons/menu.png"));menuBtn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);QMenu *menu = new QMenu(this);menu->addAction("选项1", this, &MainWindow::onMenuOption1);menu->addAction("选项2", this, &MainWindow::onMenuOption2);menu->addSeparator();menu->addAction("退出", this, &MainWindow::close);menuBtn->setMenu(menu);menuBtn->setPopupMode(QToolButton::MenuButtonPopup);layout->addWidget(menuBtn);// 创建自动浮起的工具按钮QToolButton *autoRaiseBtn = new QToolButton();autoRaiseBtn->setText("自动浮起按钮");autoRaiseBtn->setIcon(QIcon(":/icons/raise.png"));autoRaiseBtn->setAutoRaise(true);autoRaiseBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);connect(autoRaiseBtn, &QToolButton::clicked, this, &MainWindow::onAutoRaiseButtonClicked);layout->addWidget(autoRaiseBtn);// 设置窗口属性setWindowTitle("QToolButton Demo");resize(300, 200);}private slots:void onBasicButtonClicked() {qDebug() << "基本按钮被点击";}void onMenuOption1() {qDebug() << "选项1被选择";}void onMenuOption2() {qDebug() << "选项2被选择";}void onAutoRaiseButtonClicked() {qDebug() << "自动浮起按钮被点击";}
};int main(int argc, char *argv[]) {QApplication app(argc, argv);MainWindow window;window.show();return app.exec();
}
觉得有帮助的话,打赏一下呗。。

需要商务合作(定制程序)的欢迎私信!!
相关文章:
qt QToolButton详解
1、概述 QToolButton是Qt框架中的一个控件,它继承自QAbstractButton。QToolButton通常用于工具栏(QToolBar)中,提供了一种快速访问命令或选项的方式。与普通的QPushButton按钮相比,QToolButton通常只显示一个图标而不…...
2024年大热,Access平替升级方案,也适合Excel用户
欢迎各位看官,您来了,就对了! 您多半是Access忠实粉丝,至少是excel用户,亦或是WPS用户吧。那就对了,今天的分享肯定对您有用。 本文1100字,阅读时长2分50秒! 现实总是不尽人意&am…...
探索Scala的模式匹配:身份证识别与等级判定!!! #Scala # scala #匹配模式
在Scala编程语言中,模式匹配是一个强大且表达力丰富的特性,它允许我们以声明式的方式处理多种情况。今天,我们将通过两个有趣的例子来展示Scala模式匹配的魅力:身份证号识别和等级判定。 1. 身份证号识别:定位你的家乡…...
python数据分析之爬虫基础:爬虫介绍以及urllib详解
前言 在数据分析中,爬虫有着很大作用,可以自动爬取网页中提取的大量的数据,比如从电商网站手机商品信息,为市场分析提供数据基础。也可以补充数据集、检测动态变化等一系列作用。可以说在数据分析中有着相当大的作用!…...
【星海随笔】syslinux
Ubuntu相关资料 https://www.pugetsystems.com/labs/hpc/ubuntu-22-04-server-autoinstall-iso/#Step_2_Unpack_files_and_partition_images_from_the_Ubuntu_2204_live_server_ISO https://launchpad.net/ubuntu/source/squashfs-tools/1:4.6.1-1build1 sudo tar -xf my_compu…...
力扣C语言刷题记录 (二)移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作: 更改…...
【Vue3】【Naive UI】<NAutoComplete>标签
【Vue3】【Naive UI】标签 <NAutoComplete> 是 Naive UI 库中的一个组件,用于实现自动完成或联想输入功能。 它允许用户在输入时看到与当前输入匹配的建议列表,从而帮助用户更快地填写表单字段。 这个组件通常用于搜索框、地址输入等场景ÿ…...
【Halcon】使用均值滤波出现假边怎么办?
在图像处理过程中,均值滤波是一种常见的平滑技术,用于减少图像中的噪声。然而,当应用于具有显著边缘或对比度变化的图像时,均值滤波可能会导致“假边”现象,即原本不存在的边缘在滤波后变得明显。以下是如何在Halcon中处理这一问题,并提供一个完整的示例代码。 示例背景…...
Flask+Minio实现断点续传技术教程
什么是MinIO MinIO是一个高性能的分布式对象存储服务,与Amazon S3 API兼容。它允许用户存储和检索任意规模的数据,非常适合于使用S3 API的应用程序。MinIO支持多租户存储,提供高可用性、高扩展性、强一致性和数据持久性。它还可以作为软件定义…...
JAVA设计模式,动态代理模式
动态代理(Dynamic Proxy)是Java中一种非常有用的设计模式。它允许在运行时创建一个实现了一组给定接口的新类。这种模式主要用于当需要为某个对象提供一个代理以控制对该对象的访问时。通过这种方式,可以添加额外的功能,如事务管理…...
HTML 快速上手
目录 一. HTML概念 二. HTML标签 1. 标题标签 2. 段落标签 3. 换行标签 4. 图片标签 5. 超链接标签 6. 表格标签 7. 表单标签 7.1 form 标签 7.2 input 标签 (1) 文本框 (2) 单选框 (3) 密码框 (4) 复选框 (5) 普通按钮 (6) 提交按钮 8. select标签 9. 无语义…...
【计算机视觉算法与应用】模板匹配、图像配准
目录 1. 基于灰度值的模板匹配 2. 基于相关性的模板匹配 3. 基于形状的模板匹配 4. 基于组件的模板识别 5. 基于形变的模板匹配 6. 基于描述符的模板匹配 7. 基于点的模板匹配 性能比较 模板匹配的算法实现需要结合具体需求和应用场景来选择方法。以下是基于 OpenCV 的…...
【Linux】设计文件系统(C实现)
要求: (1)可以实现下列几条命令 dir 列文件目录 create 创建文件 delete 删除文件 read 读文件 write 写文件 (2)列目录时要列出文件名、存取权限(八进制)、文件长度、时间(创建时间,修改时间以及…...
详解Rust多线程编程
文章目录 多线程模型创建和管理线程自定义线程行为线程传递数据线程间通信线程池错误处理与线程Condvar(条件变量)无锁并发高性能并发库 Rust的多线程编程提供了一种安全、高效的方式来进行并发操作。Rust的并发性设计原则之一是确保线程安全,同时避免运行时的开销&…...
el-upload上传多个文件,一次请求,Django接收
1、:file-list"fileList" :on-change"handleChange" 将文件赋值到fileList 2、 :auto-upload"false" 手动触发上传 写个按钮点击执行这个 this.$refs.upload.submit(); 3、自己写上传,不会再触发上传成功或失败回调 4、 request.FI…...
Python实现网站资源批量下载【可转成exe程序运行】
Python实现网站资源批量下载【可转成exe程序运行】 背景介绍解决方案转为exe可执行程序简单点说详细了解下 声明 背景介绍 发现 宣讲家网 的PPT很好,作为学习资料使用很有价值,所以想下载网站的PPT课件到本地,但是由于网站限制,一…...
《JavaScript高级程序设计》读书笔记 20
感谢点赞、关注和收藏! 原始值包装类型 为了方便操作原始值,ECMAScript 提供了 3 种特殊的引用类型:Boolean、Number 和 String。每当用到某个原始值的方法或属性时,后台都会创建一个相应原始包装类型的对象,从而暴露…...
ASP.NET Core项目中使用SqlSugar连接多个数据库的方式
之前学习ASP.NETCore及SqlSugar时都是只连接单个数据库处理数据,仅需在Program文件中添加ISqlSugarClient的单例即可(如下代码所示)。 builder.Services.AddSingleton<ISqlSugarClient>(s > {SqlSugarScope sqlSugar new SqlSugar…...
Java面试八股文(精选、纯手打)
全国内大厂Java面试高频题库 本小册内容涵盖:Java基础,JVM,多线程,数据库(MySQL/Redis)SSM,Dubbo,网络,MQ,Zookeeper,Netty,微服务&a…...
工程设计行业内外网文件交换解决方案:FileLink助力高效、安全的跨网协作
在工程设计行业,文件交换和信息共享是项目顺利推进的关键。尤其是涉及复杂的设计图纸、技术方案、合同文件等重要资料时,如何确保文件在内外网之间的高效、安全传输,直接影响到项目的进度和质量。FileLink正是为此而生,它为工程设…...
5个突破边界技巧:OpenSpeedy游戏变速工具深度优化指南
5个突破边界技巧:OpenSpeedy游戏变速工具深度优化指南 【免费下载链接】OpenSpeedy 🎮 An open-source game speed modifier. 项目地址: https://gitcode.com/gh_mirrors/op/OpenSpeedy 副标题:如何通过用户态Hook技术实现游戏帧率自由…...
永磁同步电机参数辨识全解析:从原理到代码实现
永磁同步电机参数辨识 提供原理图、PCB和BOM表及文档说明 永磁同步电机参数辨识 包括初始位置检测,编码器零点位置、方向辨识; 包括电机极对数、电阻、电感、磁链、反电势常数、编码器零位等 包括源C代码,代码详细注释文档,可见…...
YimMenu终极指南:5分钟学会GTA5最强安全增强工具
YimMenu终极指南:5分钟学会GTA5最强安全增强工具 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu …...
基于Matlab的分布式电源选址定容软件:优化接入点与容量,降低网损与电压越限风险
分布式电源选址定容 软件:Matlab 介绍:在改进的IEEE33节点系统中分布式电源选择最佳接入点和接入容量,以网损和电压越限惩罚为目标进行粒子群优化,能得出最佳接入点和接入容量,接入前后电压变化,基础程…...
解锁Intel GPU的CUDA能力:从零开始的跨硬件计算实践
解锁Intel GPU的CUDA能力:从零开始的跨硬件计算实践 【免费下载链接】ZLUDA CUDA on non-NVIDIA GPUs 项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA 当实验室电脑只有Intel集成显卡却需要运行CUDA加速程序时,当笔记本的Iris Xe显卡面…...
PADS 铜箔区域规则与技巧
铜箔一定要非直角 直角会向外辐射 然后能走直线不走斜线方显布局的落落大方铜箔布好后可以选择任选去选择铜箔的边沿去拉它的形状 还可以通过打断去让他多几个拐点直接分割一个...
三菱电梯保密资料解析与代码分析
三菱电梯保密资料凌云PRO地址码包括: 1.基本参数地址 2.轿厢部件地址 3.操作箱与外招部件地址 门部件地址 5.楼层部件地址 6.井道信息系统地址 7.操作模式地址 8.附加功能(各台)地址 9.附加功能(群控)地址 10.响应部件地址 11.声音部件地址 1…...
基于碳排放交易与需求响应的综合优化调度策略:微网虚拟电厂日前调度模型研究
MATLAB代码:计及碳排放交易及多种需求响应的微网/虚拟电厂日前优化调度 关键词:碳排放交易 需求响应 空调负荷 电动汽车 微网/虚拟电厂优化调度 参考文档:《计及电动汽车和需求响应的多类电力市场下虚拟电厂竞标模型》参考其电动汽车模型以及…...
终极Windows内存优化指南:用Mem Reduct释放被浪费的RAM资源
终极Windows内存优化指南:用Mem Reduct释放被浪费的RAM资源 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memreduct …...
使用PHP和Xunsearch实现歌曲搜索功能
要打造一款高效的音乐网站,搜索功能绝对是重中之重!试想一下,当用户打开你的音乐网站,输入一首歌名,却发现搜索结果不仅慢,还不精准,那简直就是“用户流失现场”!今天我们聊聊如何用…...
