Qt菜单栏工具栏状态栏的实现


前言

在前面学习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()
{
}

在这里插入图片描述
看看运行效果
在这里插入图片描述
其实就是在窗口中添加了一个文本编辑,这样我们就可以在上面输入文本了

总结

这样我们就通过代码来实现了菜单栏,工具栏,以及状态栏,后面我们来介绍资源文件的添加,可以直接编辑这些东西,不需要通过代码来实现,当然用代码来实现一遍是来加深我们的认识(如果这篇博文对您有帮助,可以给博主点个赞)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值