7、带菜单栏的窗口(QMainWindow)

下面是相关的程序文件,仅供参考:

01_QMainWindow.zip

概述

QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget),是许多应用程序的基础,如文本编辑器,图片编辑器等。

注意:在添加对应栏的时候需要在cpp文件中添加对应的头文件

#include <QMenuBar>
#include <QToolBar>
#include <QPushButton>
#include <QStatusBar>
#include <QLabel>
#include <QDockWidget>
#include <QTextEdit>

1. 菜单栏(最多一个)

1.1. 创建菜单栏

我们先重置以下窗口大小,然后创建一个菜单栏(注意最多只能创建一个),并将其放入窗口中,否则不会显示到窗口中。

//重置窗口大小
    resize(600,400);

    //菜单栏  最多只能有一个
    //菜单栏创建
    QMenuBar *bar=menuBar();
    //将菜单栏放入到窗口中
    setMenuBar(bar);

1.2. 创建菜单

我们在菜单栏中添加两个菜单:文件和编辑

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

效果如下:

1.3. 创建菜单项

我们对文件这个菜单下添加两个选项:新建和打开,并添加分隔符将其隔开

//创建菜单项
    QAction * newAction = fileMenu->addAction("新建");
    //添加分隔符
    fileMenu->addSeparator();
    QAction * openAction = fileMenu->addAction("打开");

效果如下:

1.4. 总结

菜单栏:

  • 创建菜单栏——menuBar();
  • 将菜单栏放入窗口——setMenuBar();
  • 创建菜单——addMenu();
  • 创建菜单项——addAction();
  • 添加分割符号——addSeparator();

2. 工具栏(可以有多个)

工具栏:

  • 创建工具栏——QToolBar();
  • 设置工具栏的默认方位——addToolBar();
  • 设置工具栏的停靠区域——setAllowedAreas();
  • 设置浮动操作——setFloatable();
  • 设置移动(总开关)——setMovable();
  • 设置工具栏选项——addAction();
  • 工具栏中添加控件——addWidget();
//工具栏   可以有多个
    QToolBar *toolBar=new QToolBar(this);
    addToolBar(Qt::LeftToolBarArea,toolBar);//设置工具栏的默认方位

    //后期设置,只允许 左右停靠
    toolBar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);

    //设置浮动操作
    toolBar->setFloatable(false);

    //设置移动 (总开关)
    toolBar->setMovable(false);

    //工具栏中可以设置内容
    toolBar->addAction(newAction);
    //添加分割线
    toolBar->addSeparator();
    toolBar->addAction(openAction);
    //工具栏中添加控件
    QPushButton *btn = new QPushButton("aa",this);
    toolBar->addWidget(btn);

效果如下:


3. 状态栏(最多一个)

状态栏

  • 创建状态栏——statusBar();
  • 设置到窗口——setStatusBar();
  • 添加控件——addWidget();(默认左侧)
  • 在右侧添加控件——addPermanentWidget();
 //状态栏  最多有一个
    QStatusBar * stBar = statusBar();
    //设置到窗口中
    setStatusBar(stBar);
    //放标签控件
    QLabel * label = new QLabel("提示信息",this);
    stBar->addWidget(label);

    QLabel * label2 = new QLabel("右侧提示信息",this);
    stBar->addPermanentWidget(label2);

效果如下:


4. 铆接部件(浮动窗口-可以有多个)

铆接部件:

  • 创建铆接部件——QDockWidget();
  • 设置默认方位——addDockWidget();
  • 设置后期停靠区域——setAllowedAreas();
//铆接部件(浮动窗口)  可以有多个
    QDockWidget * dockWidget = new QDockWidget("浮动",this);
    addDockWidget(Qt::BottomDockWidgetArea,dockWidget);
    //设置后期停靠区域,只允许上下
    dockWidget->setAllowedAreas(Qt::TopDockWidgetArea|Qt::BottomDockWidgetArea);

    //设置中心部件  只能一个
    QTextEdit * edit = new QTextEdit(this);
    setCentralWidget(edit);

效果如下:


5. 中心部件(最多一个)

中心部件:

  • 创建中心部件——QTextEdit();
  • 设为中心部件——setCentralWidget();
//设置中心部件  只能一个
    QTextEdit * edit = new QTextEdit(this);
    setCentralWidget(edit);

效果如下:

猜你喜欢

转载自blog.csdn.net/qq_63388834/article/details/135130088