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)
相关推荐
IU宝7 分钟前
vector的使用,以及部分功能的模拟实现(C++)
开发语言·c++
geovindu31 分钟前
Qt Designer and Python: Build Your GUI
开发语言·qt
Hunter_pcx1 小时前
[C++技能提升]插件模式
开发语言·c++
左手の明天1 小时前
【C/C++】C++中使用vector存储并遍历数据
c语言·开发语言·c++
PaLu-LI2 小时前
ORB-SLAM2源码学习:Initializer.cc(13): Initializer::ReconstructF用F矩阵恢复R,t及三维点
c++·人工智能·学习·线性代数·ubuntu·计算机视觉·矩阵
呆呆珝2 小时前
RKNN_C++版本-YOLOV5
c++·人工智能·嵌入式硬件·yolo
c++初学者ABC2 小时前
蓝桥杯LQ1044 求完数
c++·算法·lq蓝桥杯
_GR3 小时前
2013年蓝桥杯第四届C&C++大学B组真题及代码
c语言·数据结构·c++·算法·蓝桥杯
CodeClimb4 小时前
【华为OD-E卷 - VLAN资源池 100分(python、java、c++、js、c)】
java·javascript·c++·python·华为od
计算机小混子5 小时前
C++实现设计模式---桥接模式 (Bridge)
c++·设计模式·桥接模式