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)
相关推荐
plmm烟酒僧22 分钟前
Windows下QT调用MinGW编译的OpenCV
开发语言·windows·qt·opencv
我是谁??33 分钟前
C/C++使用AddressSanitizer检测内存错误
c语言·c++
Black_Friend1 小时前
关于在VS中使用Qt不同版本报错的问题
开发语言·qt
CSUC1 小时前
【Qt】QTreeView 和 QStandardItemModel的关系
qt
发霉的闲鱼1 小时前
MFC 重写了listControl类(类名为A),并把双击事件的处理函数定义在A中,主窗口如何接收表格是否被双击
c++·mfc
小c君tt1 小时前
MFC中Excel的导入以及使用步骤
c++·excel·mfc
xiaoxiao涛1 小时前
协程6 --- HOOK
c++·协程
冷凝女子2 小时前
【QT】海康视频及openCv抓拍正脸接口
qt·opencv·音视频·海康
羊小猪~~3 小时前
数据结构C语言描述2(图文结合)--有头单链表,无头单链表(两种方法),链表反转、有序链表构建、排序等操作,考研可看
c语言·数据结构·c++·考研·算法·链表·visual studio
苏三有春4 小时前
PyQt5实战——UTF-8编码器功能的实现(六)
开发语言·qt