QT5学习笔记 6、QMainWindow

本文详细介绍了如何在Qt中使用QMainWindow创建一个基础应用程序,包括添加菜单栏、工具栏、状态栏以及浮动窗口。通过实例展示了如何设置菜单、工具栏功能和显示相关信息。
摘要由CSDN通过智能技术生成

先看一下本节完成品效果:

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

创建一个新项目,基类选择QMainWindow,如图,不要勾选创建界面

1、菜单栏

菜单栏类QMenuBar

菜单类QMenu

在mainwindow.cpp中进行如下修改:

可复制代码:

#include "mainwindow.h"
#include<QMenuBar>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    resize(600,400);
    QMenuBar *bar = menuBar();
    this->setMenuBar(bar);
    QMenu *fileMenu = bar->addMenu("文件");
    QAction *newAction = fileMenu->addAction("新建");
    fileMenu->addSeparator();
    QAction *openAction = fileMenu->addAction("打开");

    QMenu *subMenu = new QMenu;
    subMenu->addAction("子菜单1");
    subMenu->addAction("子菜单2");
    newAction->setMenu(subMenu);
}

MainWindow::~MainWindow() {}

运行效果

2、工具栏

在mainwindow.cpp中进行如下修改

可复制代码:

#include "mainwindow.h"
#include<QMenuBar>
#include<QToolBar>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    resize(600,400);
    QMenuBar *bar = menuBar();
    this->setMenuBar(bar);
    QMenu *fileMenu = bar->addMenu("文件");
    QAction *newAction = fileMenu->addAction("新建");
    fileMenu->addSeparator();
    QAction *openAction = fileMenu->addAction("打开");

    QMenu *subMenu = new QMenu;
    subMenu->addAction("子菜单1");
    subMenu->addAction("子菜单2");
    newAction->setMenu(subMenu);

    //工具栏
    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->addAction(openAction);
}

MainWindow::~MainWindow() {}

运行效果:

3、状态栏

在mainwindow.cpp中进行如下添加

可复制代码 :

 //状态栏
    QStatusBar *sBar = statusBar();
    setStatusBar(sBar);
    QLabel *label1 = new QLabel("左侧信息1",this);
    QLabel *label2 = new QLabel("右侧信息1",this);
    QLabel *label3 = new QLabel("左侧信息2",this);

    sBar->addWidget(label1);
    sBar->addPermanentWidget(label2);
    sBar->insertWidget(0,label3);

运行效果:

4、铆接部件 浮动窗口

代码:

可复制代码

   //铆接部件
    QDockWidget *dock = new QDockWidget("浮动窗口",this);
    addDockWidget(Qt::BottomDockWidgetArea,dock);
    dock->setAllowedAreas(Qt::TopDockWidgetArea|Qt::BottomDockWidgetArea);
    //核心部件
    QTextEdit *edit = new QTextEdit(this);
    setCentralWidget(edit);

运行效果

本节代码汇总(mainwindow.cpp):

#include "mainwindow.h"
#include<QMenuBar>
#include<QToolBar>
#include<QLabel>
#include<QStatusBar>
#include<QDockWidget>
#include<QTextEdit>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    resize(600,400);
    QMenuBar *bar = menuBar();
    this->setMenuBar(bar);
    QMenu *fileMenu = bar->addMenu("文件");
    QAction *newAction = fileMenu->addAction("新建");
    fileMenu->addSeparator();
    QAction *openAction = fileMenu->addAction("打开");

    QMenu *subMenu = new QMenu;
    subMenu->addAction("子菜单1");
    subMenu->addAction("子菜单2");
    newAction->setMenu(subMenu);

    //工具栏
    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->addAction(openAction);

    //状态栏
    QStatusBar *sBar = statusBar();
    setStatusBar(sBar);
    QLabel *label1 = new QLabel("左侧信息1",this);
    QLabel *label2 = new QLabel("右侧信息1",this);
    QLabel *label3 = new QLabel("左侧信息2",this);

    sBar->addWidget(label1);
    sBar->addPermanentWidget(label2);
    sBar->insertWidget(0,label3);

    //铆接部件
    QDockWidget *dock = new QDockWidget("浮动窗口",this);
    addDockWidget(Qt::BottomDockWidgetArea,dock);
    dock->setAllowedAreas(Qt::TopDockWidgetArea|Qt::BottomDockWidgetArea);
    //核心部件
    QTextEdit *edit = new QTextEdit(this);
    setCentralWidget(edit);

}

MainWindow::~MainWindow() {}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值