一.简述工具栏
⼯具栏是应⽤程序中集成各种功能实现快捷键使⽤的⼀个区域。
可以有多个,也可以没有,它并不是应⽤程序中必须存在的组件。
它是⼀个可移动的组件,它的元素可以是各种窗⼝组件,它的元素通常以图标按钮的⽅式存在。
下图为⼯具栏的⽰意图:
二.QToolBar
1.概念
QToolBar
是 Qt 框架中用于创建工具栏的类,它提供了一种方便的方式来组织和展示工具按钮、工具部件等。工具栏通常用于提供对应用程序功能的快速访问。
2.QToolBar的属性
属性 | 说明 |
---|---|
movable | 设置工具栏是否可拖动,默认为tre。 |
orientation | 设置工具栏的方向,可以是Qt::Horizontal(水平方向)或Qt::Vertical |
iconSize | 设置工具栏上图标的大小。 |
toolButtonStyle | 设置工具栏按钮的样式,可以是 Qt::ToolButtonIconOnly(仅图标) Qt::ToolButtonTextOnly(仅文本) Qt::ToolButtonIconText(图标和文本) |
3.QToolBar常用成员函数
API | 说明 |
addAction(action) | 在工具栏上添加一个操作按钮。 |
addSeparator() | 在工具栏上添加一个分隔符。 |
addWidget(widget) | 在工具栏上添加一个自定义控件。 |
clear() | 清空工具栏上的所有控件。 |
insertWidget(before, widget) | 在指定控件之前插入一个自定义控件。 |
removeAction(action) | 从工具栏中移除一个操作按钮。 |
toggleViewAction() | 返回一个切换工具栏显示与隐藏的操作按钮。 |
void setMovable(bool movable) | 设置工具栏是否可移动 |
setFloatable(floatable) | 设置工具栏是否可浮动。 |
setToolButtonStyle(style) | 设置工具栏按钮的样式。 |
void setIconSize(const QSize &iconSize) | 设置工具栏上图标的大小。 |
三.代码创建工具栏
1. 创建工具栏
创建工具栏,并使用addToolBar() 函数添加到窗口中
调⽤ QMainWindow类 的 addToolBar() 函数来创建⼯具栏,每增加⼀个⼯具栏都需要调⽤⼀次该函数。
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QToolBar>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
QToolBar * toolbar = new QToolBar();
this->addToolBar(toolbar);
}
MainWindow::~MainWindow()
{
delete ui;
}
注:因为没有内容,所以此时为空
2. 添加快捷项
在工具栏中添加快捷项等同于菜单项QAction()
,并使用addAction()函数添加到工具栏中
QAction* act1=new QAction("new(&A)");
QAction* act2=new QAction("save(&B)");
3. 设置工具栏图标
将图标存储到qrc文件:
1.在阿里巴巴矢量图标库中进行查看合适的图标,如下图
2.将图片加入到qrc文件中,详细步骤参考文章:qrc文件机制
3.将图片添加到快捷项中
act1->setIcon(QIcon(":/new.png"));
act2->setIcon(QIcon(":/save.png"));
4. 设置提示信息(toolTip)
在上述操作中,将快捷项设置图标后,本来的文字没有消失,默认变成toolTip的形式存在
也可以通过setToolTip的方法改变提示信息
act1->setToolTip("new file button");
act2->setToolTip("save file button");
5. 设置工具栏初始位置和工具栏停放的边缘
⼯具栏停靠位置的设置有两种⽅式。⼀种是在创建⼯具栏的同时指定停靠的位置,另⼀种是通过
QToolBar类提供的setAllowedAreas()函数来设置。⽅式⼀:创建⼯具栏的同时指定其停靠的位置。
⽅式⼀:创建⼯具栏的同时指定其停靠的位置。在创建⼯具栏的同时,也可以设置⼯具栏的位置,
其默认位置是在窗⼝的最上⾯,其中可以设置的位置包括:
• Qt::LeftToolBarArea 停靠在左侧
• Qt::RightToolBarArea 停靠在右侧
• Qt::TopToolBarArea 停靠在顶部
• Qt::BottomToolBarArea 停靠在底部
• Qt::AllToolBarAreas 以上四个位置都可停靠⽅式⼆:使⽤QToolBar类提供的 setAllowedAreas()函数位置停靠位置。如下⽰例:
注:在创建⼯具栏的同时指定其停靠的位置,指的是程序运⾏时⼯具栏默认所在的位置;⽽使⽤setAllowedAreas()函数设置停靠位置,指的是⼯具栏允许其所能停靠的位置。
6. 设置工具栏的浮动
⼯具栏的浮动属性可以通过 QToolBar类 提供的 setFloatable()函数 来设置。
//允许工具栏浮动
toolbar1->setFloatable(true);
//不允许工具栏浮动
toolbar1->setFloatable(false);
7. 设置工具栏的移动
若设置⼯具栏为不移动状态,则设置其停靠位置的操作就不会⽣效,所以设置⼯具栏
的移动属性类似于总开关的效果。
设置⼯具栏的移动属性可以通过 QToolBar类 提供的 setMovable()函数 来设置。
//允许工具栏移动
toolbar2->setMovable(true);
//不允许工具栏移动
toolbar2->setMovable(false);