QT基础-工具栏学习
参考Qt学习笔记(六):工具栏
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent):QMainWindow(parent){
this->resize(1200,1300);
// 创建工具栏对象,工具栏可以有多个,菜单栏只能有一个
QToolBar *tBar = new QToolBar(this);
// 创建菜单栏对象
QMenuBar *mBar = this->menuBar();
// 添加菜单
QMenu *fileMenu = mBar->addMenu("文件");
QMenu *editMenu = mBar->addMenu("编辑");
// 添加子菜单
QAction *newFileMenu = fileMenu->addAction("新建文件");
QAction *copyMenu = editMenu->addAction("复制");
// 分割线
setSeparat(fileMenu);
setSeparat(editMenu);
QAction *openMenu = fileMenu->addAction("打开新窗口");
// 分割线
setSeparat(fileMenu);
QAction *findMenu = fileMenu->addAction("访达");
// 将菜单栏中的菜单加入进工具栏
tBar->addAction(newFileMenu);
tBar->addAction(copyMenu);
// 指定工具栏的默认停靠方式,不指定将会是停靠在左上角,
// 工具栏可以自由拖拽
this->addToolBar(Qt::LeftToolBarArea,tBar);
// 设置工具栏的停靠位置,不设置这句话上下左右都可以停靠
tBar->setAllowedAreas(Qt::LeftToolBarArea
|Qt::RightToolBarArea);
// 设置工具栏禁止浮动,不设置,工具栏将会在界面的任意角落摆放(浮动)
tBar->setFloatable(false);
// 设置工具栏禁止移动,设置之后,无法再对工具栏进行拖拽
tBar->setMovable(false);
// 为菜单栏子菜单绑定触发事件
connect(newFileMenu,&QAction::triggered,this,[=]{
qDebug()<<"新建文件";
});
connect(copyMenu,&QAction::triggered,this,[=]{
qDebug()<<"复制文件";
});
connect(openMenu,&QAction::triggered,this,[=]{
qDebug()<<"打开新窗口";
});
connect(findMenu,&QAction::triggered,this,[=]{
qDebug()<<"访达";
});
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::setSeparat(QMenu *ptr){
ptr->addSeparator();
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QPushButton>
#include <QDebug>
#include <QMenuBar>
#include <QMenu>
#include <QAction>
#include <QToolBar>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
int b;
MainWindow(QWidget *parent = nullptr);
~MainWindow();
void setSeparat(QMenu *ptr=0);
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H