Qt应用开发(基础篇)——工具按钮类 QToolButton

一、前言

QToolButton 类继承于QAbstractButton ,该部件为命令或选项提供了一个快速访问按钮,通常用于QToolBar中。

按钮基类 QAbstractButton

QToolButton是一个特殊的按钮,一般显示文本,只显示图标,结合toolBar使用。它提供对特定命令或选项的快速访问,与普通的命令按钮相反,工具按钮通常不显示文本标签,而是显示一个图标。

QToolButton 工具按钮通常是QToolBar 在使用a**ddAction()**创建新的QAction实例时创建的。也可以以与任何其他小部件相同的方式构造工具按钮,并将它们与布局中的其他小部件一起排列。

cpp 复制代码
QAction *act1 = new QAction("上");
QAction *act2 = new QAction("左");
QAction *act3 = new QAction("下");
QAction *act4 = new QAction("右");

QToolButton *btn1 = new QToolButton;
btn1->setArrowType(Qt::UpArrow);
QToolButton *btn2 = new QToolButton;
btn2->setArrowType(Qt::LeftArrow);
QToolButton *btn3 = new QToolButton;
btn3->setArrowType(Qt::DownArrow);
QToolButton *btn4 = new QToolButton;
btn4->setArrowType(Qt::RightArrow);

QToolBar *bar = new QToolBar(this);
bar->setFixedWidth(500);
bar->setFixedHeight(50);
bar->addAction(act1);
bar->addAction(act2);
bar->addAction(act3);
bar->addAction(act4);  
bar->addAction(QApplication::style()->standardIcon(QStyle::SP_MessageBoxInformation),"");  
bar->addAction(QApplication::style()->standardIcon(QStyle::SP_MessageBoxWarning),""); 
bar->addAction(QApplication::style()->standardIcon(QStyle::SP_MessageBoxCritical),"");
bar->addAction(QApplication::style()->standardIcon(QStyle::SP_MessageBoxQuestion),"");
bar->addWidget(btn1);
bar->addWidget(btn2);
bar->addWidget(btn3);
bar->addWidget(btn4);

QToolButton 可以设置icon 图标,当按钮的功能不可用时使用禁用的像素图,当按钮自动抬起时,由于鼠标指针悬停在活动像素图上,显示活动像素图。也可以使用arrowType显示箭头图标,参考上文示例。

二:QToolButton 类

1、arrowType

该属性用于是否是箭头图标,参考上文示例。

cpp 复制代码
Qt::ArrowType arrowType() const         
void setArrowType(Qt::ArrowType type)  

2、autoRaise

该属性用于是否自动升高模式。在自动升高模式下,按钮在鼠标指向它时绘制3D帧。当在QToolBar中使用按钮时,该功能会自动打开,也就是说不要在QToolBar使用该按钮之前调用setAutoRaise,否则会被重置回去。

cpp 复制代码
bool autoRaise() const            
void setAutoRaise(bool enable)    

在示例中添加设置toolbutton1的autoRaise为false。

cpp 复制代码
btn1->setAutoRaise(false);

3、popupMode

该属性表示按钮与弹出菜单的交互方式,默认为QToolButton::DelayedPopup。

cpp 复制代码
QToolButton::ToolButtonPopupMode popupMode() const          
void setPopupMode(QToolButton::ToolButtonPopupMode mode)    
QToolButton::ToolButtonPopupMode 描述
QToolButton::DelayedPopup 在按住工具按钮一段时间后显示菜单
QToolButton::MenuButtonPopup 工具按钮显示一个特殊的箭头,以指示存在菜单。当按下按钮的箭头部分时,将显示菜单。
QToolButton::InstantPopup 按下工具按钮,菜单立即显示。在这种模式下,按钮本身的动作不会被触发

4、toolButtonStyle

该属性用于确定图标和文本的显示策略,默认为Qt::ToolButtonIconOnly。

cpp 复制代码
Qt::ToolButtonStyle toolButtonStyle() const       
void setToolButtonStyle(Qt::ToolButtonStyle style)
Qt::ToolButtonStyle 描述
Qt::ToolButtonIconOnly 只显示图标
Qt::ToolButtonTextOnly 只显示文本
Qt::ToolButtonTextBesideIcon 文本在图标旁边
Qt::ToolButtonTextUnderIcon 文本在图标下面
Qt::ToolButtonFollowStyle 跟随系统

5、公共方法

1)menu

返回按钮绑定的菜单。

cpp 复制代码
QMenu *menu() const

2)setMenu

设置按钮绑定的菜单,菜单弹出策略由popupMode决定。

cpp 复制代码
void setMenu(QMenu *menu)

3)defaultAction

返回默认的动作Action。

cpp 复制代码
QAction *defaultAction() const

4)setDefaultAction

设置一个默认的action,这个动作可能定义了按钮的属性,比如文本、图标、工具提示等。

cpp 复制代码
void setDefaultAction(QAction *action)

6、公共槽函数

1)showMenu

显示菜单。如果没有设置菜单,使用这个函数不会有任何反应。在菜单关闭之前,这个函数不会返回。

cpp 复制代码
void showMenu()

7、信号

1)triggered

这个信号在给定的Action被触发时发出,参考上面的例子,我们定义了很多的Action。

该操作还可以与用户界面的其他部分相关联,例如菜单项和键盘快捷键。以这种方式共享操作有助于使用户界面更加一致,并且通常可以减少实现的工作量。

cpp 复制代码
void triggered(QAction *action)
相关推荐
Betty’s Sweet1 分钟前
[C++]:IO流
c++·文件·fstream·sstream·iostream
敲上瘾15 分钟前
操作系统的理解
linux·运维·服务器·c++·大模型·操作系统·aigc
不会写代码的ys21 分钟前
【类与对象】--对象之舞,类之华章,共绘C++之美
c++
兵哥工控24 分钟前
MFC工控项目实例三十二模拟量校正值添加修改删除
c++·mfc
长弓聊编程34 分钟前
Linux系统使用valgrind分析C++程序内存资源使用情况
linux·c++
cherub.41 分钟前
深入解析信号量:定义与环形队列生产消费模型剖析
linux·c++
暮色_年华1 小时前
Modern Effective C++item 9:优先考虑别名声明而非typedef
c++
重生之我是数学王子1 小时前
QT基础 编码问题 定时器 事件 绘图事件 keyPressEvent QT5.12.3环境 C++实现
开发语言·c++·qt
我们的五年1 小时前
【Linux课程学习】:进程程序替换,execl,execv,execlp,execvp,execve,execle,execvpe函数
linux·c++·学习
做人不要太理性2 小时前
【C++】深入哈希表核心:从改造到封装,解锁 unordered_set 与 unordered_map 的终极奥义!
c++·哈希算法·散列表·unordered_map·unordered_set