创建项目时,指定基类为 QMainWindow,不勾选“创建界面”,通过代码实现工具栏的创建,了解工具栏实现的原理。
#include "mainwindow.h"
#include <QToolBar>
#include <QMenuBar>
#include <QMenu>
#include <QAction>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
this->resize(400, 300);
// 创建一个工具栏对象(工具栏可以有多个,菜单栏只有一个)
QToolBar *toolBar = new QToolBar(this);
// 添加工具栏项
QAction *action = new QAction("新建", this);
toolBar->addAction(action); // 可以添加 QAction 对象
toolBar->addAction("打开"); // 也可以直接添加
toolBar->addSeparator(); // 添加分割线
// 为工具栏绑定点击事件
action->connect(action, &QAction::triggered, [=](){
qDebug() << "新建工具栏";
});
// 注意:工具栏也可以直接添加菜单项作为工具栏项
QMenuBar *mBar = this->menuBar(); // 创建菜单栏
QMenu *editMenu = mBar->addMenu("编辑"); // 添加菜单
QAction *copyAction = editMenu->addAction("复制"); // 添加菜单项
QAction *pasteAction = editMenu->addAction("粘贴"); // 添加菜单项
// 直接将菜单项添加到工具栏上
toolBar->addAction(copyAction);
toolBar->addAction(pasteAction);
// 将工具栏添加到窗口上;
// 工具栏可以拖拽,在窗口的上、下、左、右都可以停靠;默认停靠上方;
// this->addToolBar(toolBar);
// 将工具栏添加到窗口上时,可以指定工具栏默认停靠左边
this->addToolBar(Qt::LeftToolBarArea, toolBar);
// 可以设置工具栏允许的停靠范围,比如设置只允许左侧和右侧停靠
toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
// 设置工具栏禁止浮动(默认情况下,工具栏可以浮动在窗口的任意位置)
toolBar->setFloatable(false);
// 设置工具栏禁止移动(工具栏禁止任何拖拽移动)
toolBar->setMovable(false);
}