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

文章目录

  • 前言
  • 一、建立菜单栏
    • 1.新建工程
    • 2.菜单栏的初步实现
    • 3.创建菜单项和添加分割线
  • 二、工具栏的实现
    • 1.工具栏的初步实现
    • 2.设置工具栏中的内容以及控件
    • 3.工具栏的一些限制命令
  • 三、状态栏的实现
    • 1.状态栏的初步设置
    • 2.设置标签控件
    • 3.设置铆接部件
    • 4.固定铆接部件停靠区域
    • 5.添加中心控件
  • 总结


前言

在前面学习Qt的时候,我完成了关于界面按钮的创建,以及信号与槽的实际应用,这次来自己用代码实现在一个窗口中建立菜单栏,工具栏以及状态栏

一、建立菜单栏

1.新建工程

按照箭头所指来操作
Qt菜单栏工具栏状态栏的实现_第1张图片

Qt菜单栏工具栏状态栏的实现_第2张图片
这里名字随便取
Qt菜单栏工具栏状态栏的实现_第3张图片
Qt菜单栏工具栏状态栏的实现_第4张图片
这里的父类要选择QMainWindow
Qt菜单栏工具栏状态栏的实现_第5张图片
Qt菜单栏工具栏状态栏的实现_第6张图片
Qt菜单栏工具栏状态栏的实现_第7张图片

Qt菜单栏工具栏状态栏的实现_第8张图片
最后就完成了项目的创建
Qt菜单栏工具栏状态栏的实现_第9张图片

2.菜单栏的初步实现

我们在箭头所指的文件里进行编程
Qt菜单栏工具栏状态栏的实现_第10张图片
附上源码

#include "mainwindow.h"
#include 

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    resize(600,400);// 重置窗口大小

    QMenuBar * bar = menuBar();//设置菜单栏,最多只能有一个

    setMenuBar(bar);//将菜单栏放入到窗口中

    QMenu * fileMenu = bar->addMenu("文件");
                                            //创建菜单
    QMenu * editMenu = bar->addMenu("编辑");


}

MainWindow::~MainWindow()
{
}

Qt菜单栏工具栏状态栏的实现_第11张图片
其他部分默认就好
Qt菜单栏工具栏状态栏的实现_第12张图片
让我们来看看运行效果
Qt菜单栏工具栏状态栏的实现_第13张图片
可以看到成功添加了菜单栏

3.创建菜单项和添加分割线

先添加几行命令

#include "mainwindow.h"
#include 

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()
{
}

Qt菜单栏工具栏状态栏的实现_第14张图片
再来看看运行效果
Qt菜单栏工具栏状态栏的实现_第15张图片
可以看到我点击菜单之后,出现了两个菜单项,并且菜单项之间还有分割线

二、工具栏的实现

1.工具栏的初步实现

继续在原有的代码上添加

#include "mainwindow.h"
#include 
#include 

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()
{
}

Qt菜单栏工具栏状态栏的实现_第16张图片
看看运行效果
Qt菜单栏工具栏状态栏的实现_第17张图片
可以看到旁边已经有工具栏了,并且我们可以移动它

2.设置工具栏中的内容以及控件

继续修改代码

#include "mainwindow.h"
#include 
#include 
#include 

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()
{
}

Qt菜单栏工具栏状态栏的实现_第18张图片
看看程序运行的效果
Qt菜单栏工具栏状态栏的实现_第19张图片
可以看到添加了新建和打开两个内容,算是和和菜单栏共享,另外下方还添加了一个按钮

3.工具栏的一些限制命令

修改代码

#include "mainwindow.h"
#include 
#include 
#include 

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()
{
}

Qt菜单栏工具栏状态栏的实现_第20张图片
这样工具栏就不能移动了,如果去掉最后一行,那么工具栏只能在左边和右边移动

三、状态栏的实现

1.状态栏的初步设置

继续在原代码上添加

#include "mainwindow.h"
#include 
#include 
#include 
#include 
#include 
#include 
#include 

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()
{
}


Qt菜单栏工具栏状态栏的实现_第21张图片
看一看运行效果
Qt菜单栏工具栏状态栏的实现_第22张图片
可以看到已经出现了状态栏,不过目前并没有什么内容在里面

2.设置标签控件

修改代码如下

#include "mainwindow.h"
#include 
#include 
#include 
#include 
#include 
#include 
#include 

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()
{
}

Qt菜单栏工具栏状态栏的实现_第23张图片
再看运行效果可以看到状态栏的信息已经出来了
Qt菜单栏工具栏状态栏的实现_第24张图片

3.设置铆接部件

代码如下

#include "mainwindow.h"
#include 
#include 
#include 
#include 
#include 
#include 
#include 

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()
{
}

Qt菜单栏工具栏状态栏的实现_第25张图片
再看运行效果
Qt菜单栏工具栏状态栏的实现_第26张图片
铆接窗口已然建立

4.固定铆接部件停靠区域

代码

#include "mainwindow.h"
#include 
#include 
#include 
#include 
#include 
#include 
#include 

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()
{
}

Qt菜单栏工具栏状态栏的实现_第27张图片
这样浮动窗口就只能在上下端显示了

5.添加中心控件

代码如下

#include "mainwindow.h"
#include 
#include 
#include 
#include 
#include 
#include 
#include 

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()
{
}

Qt菜单栏工具栏状态栏的实现_第28张图片
看看运行效果
Qt菜单栏工具栏状态栏的实现_第29张图片
其实就是在窗口中添加了一个文本编辑,这样我们就可以在上面输入文本了

总结

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

你可能感兴趣的:(Qt,qt,java,eclipse,c++,深度学习)