【Qt】工具栏

一.简述工具栏

⼯具栏是应⽤程序中集成各种功能实现快捷键使⽤的⼀个区域。

可以有多个,也可以没有,它并不是应⽤程序中必须存在的组件。

它是⼀个可移动的组件,它的元素可以是各种窗⼝组件,它的元素通常以图标按钮的⽅式存在。

下图为⼯具栏的⽰意图:

二.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);

### Qt 工具栏的使用与开发 Qt 是一个功能强大的跨平台 C++ 开发框架,广泛用于 GUI 应用程序的开发工具栏(`QToolBar`)是 Qt 提供的一个重要控件,用于组织和展示常用操作按钮,提升用户界面的易用性和直观性。 #### 工具栏的基本使用 在 Qt 中,可以通过 `QToolBar` 类来创建和管理工具栏工具栏通常包含按钮、下拉菜单、分隔符等元素,这些元素可以关联到 `QAction` 对象,以实现具体的功能。 ```cpp // 创建主窗口 QMainWindow mainWindow; // 创建工具栏 QToolBar *toolBar = new QToolBar("Main Toolbar", &mainWindow); // 添加工具栏到主窗口 mainWindow.addToolBar(toolBar); // 创建 QAction QAction *openAction = new QAction(QIcon(":/icons/open.png"), "Open", &mainWindow); QAction *saveAction = new QAction(QIcon(":/icons/save.png"), "Save", &mainWindow); // 将 QAction 添加到工具栏 toolBar->addAction(openAction); toolBar->addAction(saveAction); ``` 通过上述代码,可以在主窗口中添加一个简单的工具栏,并将两个带有图标的动作(打开和保存)添加到工具栏中。 #### 工具栏的高级功能 1. **添加下拉菜单** 工具栏中的按钮可以关联到带有下拉菜单的 `QAction`,以提供更多的操作选项。 ```cpp // 创建带有下拉菜单的 QAction QAction *menuAction = new QAction("Options", &mainWindow); QMenu *menu = new QMenu(&mainWindow); menu->addAction("Option 1"); menu->addAction("Option 2"); menuAction->setMenu(menu); // 添加到工具栏 toolBar->addAction(menuAction); ``` 2. **添加分隔符** 分隔符用于将工具栏中的功能分组,提升界面的可读性。 ```cpp toolBar->addSeparator(); ``` 3. **添加自定义控件** 工具栏支持添加任意类型的控件,例如 `QComboBox` 或 `QLineEdit`。 ```cpp QComboBox *comboBox = new QComboBox(); comboBox->addItem("Item 1"); comboBox->addItem("Item 2"); toolBar->addWidget(comboBox); ``` #### 工具栏的样式与布局 Qt 提供了丰富的样式设置功能,开发者可以通过样式表(`QSS`)来定制工具栏的外观。 ```cpp toolBar->setStyleSheet("background-color: #f0f0f0; border: 1px solid #cccccc;"); ``` 此外,工具栏的位置可以通过 `Qt::ToolBarArea` 枚举进行调整,支持顶部、底部、左侧和右侧四个区域。 ```cpp mainWindow.addToolBar(Qt::LeftToolBarArea, toolBar); ``` #### 工具栏的动态管理 在某些场景下,工具栏的内容可能需要根据用户操作或应用状态动态变化。可以通过 `QAction::setVisible()` 或 `QToolBar::clear()` 方法实现动态更新。 ```cpp // 动态隐藏某个动作 openAction->setVisible(false); // 清空工具栏内容 toolBar->clear(); ``` #### 工具栏与主窗口的集成 工具栏是主窗口(`QMainWindow`)的重要组成部分,通常与状态栏(`QStatusBar`)、菜单栏(`QMenuBar`)和中心控件(`setCentralWidget()`)协同工作,共同构建完整的用户界面。 ```cpp // 设置中心控件 QWidget *centralWidget = new QWidget(&mainWindow); mainWindow.setCentralWidget(centralWidget); ``` #### 开发最佳实践 - **图标与文本的平衡**:工具栏中的按钮应优先使用图标,但需要确保图标含义直观。对于复杂操作,可以结合文本标签使用。 - **可定制性**:允许用户自定义工具栏内容,例如通过拖拽调整按钮顺序或添加/移除功能。 - **响应式设计**:工具栏应适应不同屏幕尺寸和分辨率,避免布局混乱。 - **性能优化**:工具栏中的控件应尽量轻量,避免影响主窗口的性能。 Qt工具栏功能强大且灵活,能够满足大多数应用程序的需求。通过合理的设计和开发实践,可以显著提升用户体验和界面的交互性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值