QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget),是许多应用程序的基础,如文本编辑器,图片编辑器等。
本篇还是以代码的形式创建界面,因此采用如下选项的设置:
出来的具体内容如下:
但是运行之后还是会有一个小的窗口出现:
1. 创建菜单栏,菜单栏只能有一个
通过QMainWindow类的menubar()函数获取主窗口菜单栏指针
QMenuBar * menuBar() const
增加如下代码:
#include "mainwindow.h"
#include <QMenuBar>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
//重置窗口大小的设置
resize(600,400);
//菜单栏创建
QMenuBar* bar=menuBar();
//将菜单栏放入到窗口中,此时因为内部还没有菜单,所以不会显示出来
setMenuBar(bar);
//菜单栏中放入菜单
bar->addMenu("file");
}
MainWindow::~MainWindow()
{
}
运行结果如下:
(1)创建菜单项
//创建菜单项
fileMenu->addAction("new");
(2)创建分隔线
//添加分割线
fileMenu->addSeparator();
创建菜单栏的代码
//重置窗口大小的设置
resize(600,400);
//菜单栏创建 菜单栏只能有一个
QMenuBar* bar=menuBar();
//将菜单栏放入到窗口中,此时因为内部还没有菜单,所以不会显示出来
setMenuBar(bar);
//菜单栏中放入菜单 返回值为QMenu
QMenu* fileMenu= bar->addMenu("file");
QMenu* editMenu= bar->addMenu("edit");
//创建菜单项
fileMenu->addAction("new");
//添加分割线
fileMenu->addSeparator();
fileMenu->addAction("open");
2. 工具栏,可以有多个
//工具栏,可以有多个
QToolBar* toolBar=new QToolBar(this);
addToolBar(toolBar);
(1)工具栏默认摆放在上方,怎么修改摆放位置呢?
可以看到它里面包含了位置摆放的参数,但是如何使用呢?进入assistant查找:
点进去之后可以看到其参数中的数据类型有这么多的枚举值,选择你想要的填写进去。在Qt中枚举值都是以"Qt::"的形式书写。
将工具栏添加到左侧,则将命令改为:
addToolBar(Qt::LeftToolBarArea,toolBar);
(2)设置只允许左右停靠
//后期设置 只允许左右停靠
toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
移动到上方时,可以看到其为一个浮动的状态
(3)那怎么设置其不能浮动呢?
//设置浮动
toolBar->setFloatable(false);
设置移动 总开关
toolBar->setMovable(false);
(4)工具栏中添加内容:
//工具栏中可以设置内容
QAction* debug=fileMenu->addAction("debug");
QAction* run=fileMenu->addAction("run");
toolBar->addAction(debug);
toolBar->addAction(run);
(5)在工具栏中添加按钮
在Qt中所有的控件都可以使用addwidget来添加
QPushButton* btn=new QPushButton("aa",this);
toolBar->addWidget(btn);
3.学习视频地址:QMainWindow菜单栏和工具栏(Qt中枚举值都以"Qt::"开头、控件都可用addwidget来添加)
4. 源码:
#include "mainwindow.h"
#include <QMenuBar>
#include <QToolBar>
#include <QPushButton>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
//重置窗口大小的设置
resize(600,400);
//菜单栏创建 菜单栏只能有一个
QMenuBar* bar=menuBar();
//将菜单栏放入到窗口中,此时因为内部还没有菜单,所以不会显示出来
setMenuBar(bar);
//菜单栏中放入菜单 返回值为QMenu
QMenu* fileMenu= bar->addMenu("file");
QMenu* editMenu= bar->addMenu("edit");
//创建菜单项
fileMenu->addAction("new");
//添加分割线
fileMenu->addSeparator();
fileMenu->addAction("open");
//工具栏,可以有多个,默认停靠在上侧
QToolBar* toolBar=new QToolBar(this);
//设置工具栏停靠在左侧
addToolBar(Qt::LeftToolBarArea,toolBar);
//后期设置 只允许左右停靠
toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
//设置浮动
toolBar->setFloatable(false);
//设置移动 总开关
toolBar->setMovable(false);
//工具栏中可以设置内容
QAction* debug=fileMenu->addAction("debug");
QAction* run=fileMenu->addAction("run");
toolBar->addAction(debug);
toolBar->addSeparator();
toolBar->addAction(run);
//工具栏中添加按钮
QPushButton* btn=new QPushButton("aa",this);
toolBar->addWidget(btn);
}
MainWindow::~MainWindow()
{
}