工具按钮常常用来显示图标,然后添加到工具栏中
常用属性和方法
文本
设置和获取文本
//设置和获取文本
QString text() const
void setText(const QString &text)
图片
设置和获取图片
//设置和获取图片
QIcon icon() const
void setIcon(const QIcon &icon)
获取和设置图片尺寸
//设置和获取图片尺寸
QSize iconSize() const
void setIconSize(const QSize &size)
按钮风格
设置和获取工具按钮的风格
Qt::ToolButtonStyle toolButtonStyle() const
void setToolButtonStyle(Qt::ToolButtonStyle style)
style有4种取值:
- Qt::ToolButtonIconOnly,只显示图片,
- Qt::ToolButtonTextOnly,只显示文本,
- Qt::ToolButtonTextBesideIcon,文本在图片的右侧,
- Qt::ToolButtonTextUnderIcon,文本在图片的下面,
- Qt::ToolButtonFollowStyle,跟随系统样式
箭头类型
可以设置箭头,注意:设置箭头后,设置的图标也就不会再显示了,被箭头代替
//获取和设置箭头的类型
Qt::ArrowType arrowType() const
void setArrowType(Qt::ArrowType type)
type有4种取值:
- Qt::NoArrow,没有箭头
- Qt::UpArrow,上箭头,
- Qt::DownArrow,下箭头,
- Qt::LeftArrow,左箭头,
- Qt::RightArrow,右箭头,
自动凸出
就是鼠标悬浮时,有一个凸出的效果(该方法还会使得按钮的边框消失)
//设置和获取自动凸出
bool autoRaise() const
void setAutoRaise(bool enable)
获取和设置按钮关联的菜单(按钮都有的方法)
//获取和设置按钮关联的菜单
QMenu *QToolButton::menu() const
void QToolButton::setMenu(QMenu *menu)
菜单弹出模式
//获取和设置菜单的弹出模式
QToolButton::ToolButtonPopupMode popupMode() const
void setPopupMode(QToolButton::ToolButtonPopupMode mode)
mode有三个取值
- QToolButton::DelayedPopup ,长按按钮一小会儿后才会弹出菜单,(注意右下角多了1个小三角)
- QToolButton::MenuButtonPopup,会出现1个小三角,点击小三角立即弹出菜单
- QToolButton::InstantPopup,点击按钮立即弹出
举例
使用ToolButton来填充工具栏
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QToolButton>
#include<QMenu>
#include<QToolBar>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr) : QWidget(parent)
{
resize(500,500);
QMenu* menu=new QMenu(this);
QAction* a1=new QAction("1号",this);
QAction* a2=new QAction("2号",this);
QAction* a3=new QAction("3号",this);
menu->addAction(a1);
menu->addAction(a2);
menu->addAction(a3);
QToolBar* tool_bar=new QToolBar(this);
//1号按钮
QToolButton* tool_btn1=new QToolButton(this);
tool_btn1->setIcon(QIcon(":/11.png"));
tool_btn1->setIconSize(QSize(30,30));
//只显示图标
tool_btn1->setToolButtonStyle(Qt::ToolButtonStyle::ToolButtonIconOnly);
tool_btn1->setAutoRaise(true);
//设置悬浮提示
tool_btn1->setToolTip("相册");
tool_bar->addWidget(tool_btn1);
//2号按钮
QToolButton* tool_btn2=new QToolButton(this);
tool_btn2->setIcon(QIcon(":/22.png"));
tool_btn2->setIconSize(QSize(30,30));
//只显示图标
tool_btn2->setToolButtonStyle(Qt::ToolButtonStyle::ToolButtonIconOnly);
tool_btn2->setAutoRaise(true);
//设置悬浮提示
tool_btn2->setToolTip("消息");
tool_btn2->setMenu(menu);
//按小箭头立即弹出菜单
tool_btn2->setPopupMode(QToolButton::MenuButtonPopup);
tool_bar->addWidget(tool_btn2);
//3号按钮
QToolButton* tool_btn3=new QToolButton(this);
tool_btn3->setIcon(QIcon(":/33.png"));
tool_btn3->setIconSize(QSize(30,30));
//只显示图标
tool_btn3->setToolButtonStyle(Qt::ToolButtonStyle::ToolButtonIconOnly);
tool_btn3->setAutoRaise(true);
//设置悬浮提示
tool_btn3->setToolTip("摄影");
tool_btn3->setMenu(menu);
//按小箭头立即弹出菜单
tool_btn3->setPopupMode(QToolButton::MenuButtonPopup);
tool_bar->addWidget(tool_btn3);
}
~Widget()=default;
};
#endif // WIDGET_H
学习链接:https://github.com/0voice