文章目录
前言
在前面学习Qt的时候,我完成了关于界面按钮的创建,以及信号与槽的实际应用,这次来自己用代码实现在一个窗口中建立菜单栏,工具栏以及状态栏
一、建立菜单栏
1.新建工程
按照箭头所指来操作
这里名字随便取
这里的父类要选择QMainWindow
最后就完成了项目的创建
2.菜单栏的初步实现
我们在箭头所指的文件里进行编程
附上源码
#include "mainwindow.h"
#include <QMenuBar>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
resize(600,400);// 重置窗口大小
QMenuBar * bar = menuBar();//设置菜单栏,最多只能有一个
setMenuBar(bar);//将菜单栏放入到窗口中
QMenu * fileMenu = bar->addMenu("文件");
//创建菜单
QMenu * editMenu = bar->addMenu("编辑");
}
MainWindow::~MainWindow()
{
}
其他部分默认就好
让我们来看看运行效果
可以看到成功添加了菜单栏
3.创建菜单项和添加分割线
先添加几行命令
#include "mainwindow.h"
#include <QMenuBar>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
resize(600,400);// 重置窗口大小
QMenuBar * bar = menuBar();//设置菜单栏,最多只能有一个
setMenuBar(bar);//将菜单栏放入到窗口中
QMenu * fileMenu = bar->addMenu("文件");
//创建菜单
QMenu * editMenu = bar->addMenu("编辑");
fileMenu->addAction("新建");//创建菜单项
fileMenu->addSeparator();//添加分割线
fileMenu->addAction("打开");//创建菜单项
}
MainWindow::~MainWindow()
{
}
再来看看运行效果
可以看到我点击菜单之后,出现了两个菜单项,并且菜单项之间还有分割线
二、工具栏的实现
1.工具栏的初步实现
继续在原有的代码上添加
#include "mainwindow.h"
#include <QMenuBar>
#include <QToolBar>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
resize(600,400);// 重置窗口大小
QMenuBar * bar = menuBar();//设置菜单栏,最多只能有一个
setMenuBar(bar);//将菜单栏放入到窗口中
QMenu * fileMenu = bar->addMenu("文件");
//创建菜单
QMenu * editMenu = bar->addMenu("编辑");
fileMenu->addAction("新建");//创建菜单项
fileMenu->addSeparator();//添加分割线
fileMenu->addAction("打开");//创建菜单项
QToolBar * toolBar = new QToolBar(this);
//设置工具栏,可以有多个
addToolBar(Qt::LeftToolBarArea,toolBar);
}
MainWindow::~MainWindow()
{
}
看看运行效果
可以看到旁边已经有工具栏了,并且我们可以移动它
2.设置工具栏中的内容以及控件
继续修改代码
#include "mainwindow.h"
#include <QMenuBar>
#include <QToolBar>
#include <QPushButton>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
resize(600,400);// 重置窗口大小
QMenuBar * bar = menuBar();//设置菜单栏,最多只能有一个
setMenuBar(bar);//将菜单栏放入到窗口中
QMenu * fileMenu = bar->addMenu("文件");
//创建菜单
QMenu * editMenu = bar->addMenu("编辑");
QAction * newAction = fileMenu->addAction("新建");//创建菜单项
fileMenu->addSeparator();//添加分割线
QAction * openAction = fileMenu->addAction("打开");//创建菜单项
QToolBar * toolBar = new QToolBar(this);
//设置工具栏,可以有多个
addToolBar(Qt::LeftToolBarArea,toolBar);
toolBar->addAction(newAction);//设置内容,和菜单栏共享
toolBar ->addSeparator();//添加分割线
toolBar->addAction(openAction);//设置内容,和菜单栏共享
QPushButton * btn = new QPushButton("文才",this);//设置一个按钮到工具栏中
toolBar->addWidget(btn);
}
MainWindow::~MainWindow()
{
}
看看程序运行的效果
可以看到添加了新建和打开两个内容,算是和和菜单栏共享,另外下方还添加了一个按钮
3.工具栏的一些限制命令
修改代码
#include "mainwindow.h"
#include <QMenuBar>
#include <QToolBar>
#include <QPushButton>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
resize(600,400);// 重置窗口大小
QMenuBar * bar = menuBar();//设置菜单栏,最多只能有一个
setMenuBar(bar);//将菜单栏放入到窗口中
QMenu * fileMenu = bar->addMenu("文件");
//创建菜单
QMenu * editMenu = bar->addMenu("编辑");
QAction * newAction = fileMenu->addAction("新建");//创建菜单项
fileMenu->addSeparator();//添加分割线
QAction * openAction = fileMenu->addAction("打开");//创建菜单项
QToolBar * toolBar = new QToolBar(this);
//设置工具栏,可以有多个
addToolBar(Qt::LeftToolBarArea,toolBar);
toolBar->addAction(newAction);//设置内容,和菜单栏共享
toolBar ->addSeparator();//添加分割线
toolBar->addAction(openAction);//设置内容,和菜单栏共享
QPushButton * btn = new QPushButton("文才",this);//设置一个按钮到工具栏中
toolBar->addWidget(btn);
toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);//限制工具栏只能左右移动
toolBar->setFloatable(false);//设置浮动,让工具栏不能悬浮在窗口中
toolBar->setMovable(false);
}
MainWindow::~MainWindow()
{
}
这样工具栏就不能移动了,如果去掉最后一行,那么工具栏只能在左边和右边移动
三、状态栏的实现
1.状态栏的初步设置
继续在原代码上添加
#include "mainwindow.h"
#include <QMenuBar>
#include <QToolBar>
#include <QPushButton>
#include <QStatusBar>
#include <QLabel>
#include <QDockWidget>
#include <QTextEdit>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
resize(600,400);// 重置窗口大小
QMenuBar * bar = menuBar();//设置菜单栏,最多只能有一个
setMenuBar(bar);//将菜单栏放入到窗口中
QMenu * fileMenu = bar->addMenu("文件");
//创建菜单
QMenu * editMenu = bar->addMenu("编辑");
QAction * newAction = fileMenu->addAction("新建");//创建菜单项
fileMenu->addSeparator();//添加分割线
QAction * openAction = fileMenu->addAction("打开");//创建菜单项
QToolBar * toolBar = new QToolBar(this);
//设置工具栏,可以有多个
addToolBar(Qt::LeftToolBarArea,toolBar);
toolBar->addAction(newAction);//设置内容,和菜单栏共享
toolBar ->addSeparator();//添加分割线
toolBar->addAction(openAction);//设置内容,和菜单栏共享
QPushButton * btn = new QPushButton("文才",this);//设置一个按钮到工具栏中
toolBar->addWidget(btn);
toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);//限制工具栏只能左右移动
toolBar->setFloatable(false);//设置浮动,让工具栏不能悬浮在窗口中
toolBar->setMovable(false);//限制工具栏的移动
QStatusBar * stBar = statusBar();//设置状态栏,只能有一个
setStatusBar(stBar);//设置到窗口中
}
MainWindow::~MainWindow()
{
}
看一看运行效果
可以看到已经出现了状态栏,不过目前并没有什么内容在里面
2.设置标签控件
修改代码如下
#include "mainwindow.h"
#include <QMenuBar>
#include <QToolBar>
#include <QPushButton>
#include <QStatusBar>
#include <QLabel>
#include <QDockWidget>
#include <QTextEdit>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
resize(600,400);// 重置窗口大小
QMenuBar * bar = menuBar();//设置菜单栏,最多只能有一个
setMenuBar(bar);//将菜单栏放入到窗口中
QMenu * fileMenu = bar->addMenu("文件");
//创建菜单
QMenu * editMenu = bar->addMenu("编辑");
QAction * newAction = fileMenu->addAction("新建");//创建菜单项
fileMenu->addSeparator();//添加分割线
QAction * openAction = fileMenu->addAction("打开");//创建菜单项
QToolBar * toolBar = new QToolBar(this);
//设置工具栏,可以有多个
addToolBar(Qt::LeftToolBarArea,toolBar);
toolBar->addAction(newAction);//设置内容,和菜单栏共享
toolBar ->addSeparator();//添加分割线
toolBar->addAction(openAction);//设置内容,和菜单栏共享
QPushButton * btn = new QPushButton("文才",this);//设置一个按钮到工具栏中
toolBar->addWidget(btn);
toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);//限制工具栏只能左右移动
toolBar->setFloatable(false);//设置浮动,让工具栏不能悬浮在窗口中
toolBar->setMovable(false);//限制工具栏的移动
QStatusBar * stBar = statusBar();//设置状态栏,只能有一个
setStatusBar(stBar);//设置到窗口中
QLabel * label = new QLabel("提示信息",this);
stBar->addWidget(label);
QLabel * label2 = new QLabel("右侧提示信息",this);
stBar->addWidget(label2);
}
MainWindow::~MainWindow()
{
}
再看运行效果可以看到状态栏的信息已经出来了
3.设置铆接部件
代码如下
#include "mainwindow.h"
#include <QMenuBar>
#include <QToolBar>
#include <QPushButton>
#include <QStatusBar>
#include <QLabel>
#include <QDockWidget>
#include <QTextEdit>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
resize(600,400);// 重置窗口大小
QMenuBar * bar = menuBar();//设置菜单栏,最多只能有一个
setMenuBar(bar);//将菜单栏放入到窗口中
QMenu * fileMenu = bar->addMenu("文件");
//创建菜单
QMenu * editMenu = bar->addMenu("编辑");
QAction * newAction = fileMenu->addAction("新建");//创建菜单项
fileMenu->addSeparator();//添加分割线
QAction * openAction = fileMenu->addAction("打开");//创建菜单项
QToolBar * toolBar = new QToolBar(this);
//设置工具栏,可以有多个
addToolBar(Qt::LeftToolBarArea,toolBar);
toolBar->addAction(newAction);//设置内容,和菜单栏共享
toolBar ->addSeparator();//添加分割线
toolBar->addAction(openAction);//设置内容,和菜单栏共享
QPushButton * btn = new QPushButton("文才",this);//设置一个按钮到工具栏中
toolBar->addWidget(btn);
toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);//限制工具栏只能左右移动
toolBar->setFloatable(false);//设置浮动,让工具栏不能悬浮在窗口中
toolBar->setMovable(false);//限制工具栏的移动
QStatusBar * stBar = statusBar();//设置状态栏,只能有一个
setStatusBar(stBar);//设置到窗口中
QLabel * label = new QLabel("提示信息",this);
stBar->addWidget(label);
QLabel * label2 = new QLabel("右侧提示信息",this);
stBar->addWidget(label2);
QDockWidget * dockWidget = new QDockWidget("浮动",this);
//设置铆接部件(浮动窗口),可以有多个
addDockWidget(Qt::BottomDockWidgetArea,dockWidget);
}
MainWindow::~MainWindow()
{
}
再看运行效果
铆接窗口已然建立
4.固定铆接部件停靠区域
代码
#include "mainwindow.h"
#include <QMenuBar>
#include <QToolBar>
#include <QPushButton>
#include <QStatusBar>
#include <QLabel>
#include <QDockWidget>
#include <QTextEdit>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
resize(600,400);// 重置窗口大小
QMenuBar * bar = menuBar();//设置菜单栏,最多只能有一个
setMenuBar(bar);//将菜单栏放入到窗口中
QMenu * fileMenu = bar->addMenu("文件");
//创建菜单
QMenu * editMenu = bar->addMenu("编辑");
QAction * newAction = fileMenu->addAction("新建");//创建菜单项
fileMenu->addSeparator();//添加分割线
QAction * openAction = fileMenu->addAction("打开");//创建菜单项
QToolBar * toolBar = new QToolBar(this);
//设置工具栏,可以有多个
addToolBar(Qt::LeftToolBarArea,toolBar);
toolBar->addAction(newAction);//设置内容,和菜单栏共享
toolBar ->addSeparator();//添加分割线
toolBar->addAction(openAction);//设置内容,和菜单栏共享
QPushButton * btn = new QPushButton("文才",this);//设置一个按钮到工具栏中
toolBar->addWidget(btn);
toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);//限制工具栏只能左右移动
toolBar->setFloatable(false);//设置浮动,让工具栏不能悬浮在窗口中
toolBar->setMovable(false);//限制工具栏的移动
QStatusBar * stBar = statusBar();//设置状态栏,只能有一个
setStatusBar(stBar);//设置到窗口中
QLabel * label = new QLabel("提示信息",this);
stBar->addWidget(label);
QLabel * label2 = new QLabel("右侧提示信息",this);
stBar->addWidget(label2);
QDockWidget * dockWidget = new QDockWidget("浮动",this);
//设置铆接部件(浮动窗口),可以有多个
addDockWidget(Qt::BottomDockWidgetArea,dockWidget);
dockWidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);//固定铆接部件与上下
}
MainWindow::~MainWindow()
{
}
这样浮动窗口就只能在上下端显示了
5.添加中心控件
代码如下
#include "mainwindow.h"
#include <QMenuBar>
#include <QToolBar>
#include <QPushButton>
#include <QStatusBar>
#include <QLabel>
#include <QDockWidget>
#include <QTextEdit>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
resize(600,400);// 重置窗口大小
QMenuBar * bar = menuBar();//设置菜单栏,最多只能有一个
setMenuBar(bar);//将菜单栏放入到窗口中
QMenu * fileMenu = bar->addMenu("文件");
//创建菜单
QMenu * editMenu = bar->addMenu("编辑");
QAction * newAction = fileMenu->addAction("新建");//创建菜单项
fileMenu->addSeparator();//添加分割线
QAction * openAction = fileMenu->addAction("打开");//创建菜单项
QToolBar * toolBar = new QToolBar(this);
//设置工具栏,可以有多个
addToolBar(Qt::LeftToolBarArea,toolBar);
toolBar->addAction(newAction);//设置内容,和菜单栏共享
toolBar ->addSeparator();//添加分割线
toolBar->addAction(openAction);//设置内容,和菜单栏共享
QPushButton * btn = new QPushButton("文才",this);//设置一个按钮到工具栏中
toolBar->addWidget(btn);
toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);//限制工具栏只能左右移动
toolBar->setFloatable(false);//设置浮动,让工具栏不能悬浮在窗口中
toolBar->setMovable(false);//限制工具栏的移动
QStatusBar * stBar = statusBar();//设置状态栏,只能有一个
setStatusBar(stBar);//设置到窗口中
QLabel * label = new QLabel("提示信息",this);
stBar->addWidget(label);
QLabel * label2 = new QLabel("右侧提示信息",this);
stBar->addWidget(label2);
QDockWidget * dockWidget = new QDockWidget("浮动",this);
//设置铆接部件(浮动窗口),可以有多个
addDockWidget(Qt::BottomDockWidgetArea,dockWidget);
dockWidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);//固定铆接部件与上下
QTextEdit * edit = new QTextEdit(this);
//设置中心部件,只能设置一个
setCentralWidget(edit);
}
MainWindow::~MainWindow()
{
}
看看运行效果
其实就是在窗口中添加了一个文本编辑,这样我们就可以在上面输入文本了
总结
这样我们就通过代码来实现了菜单栏,工具栏,以及状态栏,后面我们来介绍资源文件的添加,可以直接编辑这些东西,不需要通过代码来实现,当然用代码来实现一遍是来加深我们的认识(如果这篇博文对您有帮助,可以给博主点个赞)。