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)
相关推荐
阳光_你好34 分钟前
请详细说明opencv/c++对图片缩放
c++·opencv·计算机视觉
杰克逊的黑豹41 分钟前
不再迷茫:Rust, Zig, Go 和 C
c++·rust·go
Y.O.U..1 小时前
今日八股——C++
开发语言·c++·面试
Zhichao_972 小时前
【UE5 C++课程系列笔记】33——商业化Json读写
c++·ue5
云边有个稻草人2 小时前
【C++】第八节—string类(上)——详解+代码示例
开发语言·c++·迭代器·string类·语法糖auto和范围for·string类的常用接口·operator[]
惊鸿一博2 小时前
c++ &&(通用引用)和&(左值引用)区别
开发语言·c++
nuo5342023 小时前
黑马 C++ 学习笔记
c语言·c++·笔记·学习
DARLING Zero two♡3 小时前
C++类间的 “接力棒“ 传递:继承(上)
开发语言·c++·继承·里氏替换原则
会讲英语的码农3 小时前
如何学习C++以及C++的宏观认知
开发语言·c++·学习
強云5 小时前
界面架构- MVP(Qt)
qt·架构