Qt_窗口界面QMainWindow的介绍

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

目录

1、菜单栏QMenuBar

1.1 使用QMainWindow的准备工作 

1.2 在ui文件中设计窗口 

1.3 在代码中设计窗口

1.4 实现点击菜单项的反馈

1.5 菜单中设置快捷键

1.6 菜单中添加子菜单

1.7 菜单项中添加分割线和图标 

1.8 关于菜单栏创建方式的讨论 

2、工具栏QToolBar 

2.1 创建工具栏

2.2 设置工具项图标 

2.3 设置工具栏的停靠位置

2.4 设置浮动、移动属性 

3、状态栏QStatusBar 

3.1 显示临时消息         

3.2 显示永久消息 

4、浮动窗口QDockWidget 

4.1 设置停靠位置

结语 


前言:

        Qt的窗口界面是通过QMainWindow类实现的,该类继承自QWidget。相比于QWidget,QMainWindow生成的界面更像是一个窗口,因为该界面的布局已经设置好了,分成五个部分:1、⼀个菜单栏(menu bar),2、多个工具栏(tool bars),3、多个浮动窗⼝(dock widgets),4、⼀个状态栏(status bar) ,5、 中心部件(central widget)。开发者只需要在这框架中加入相关控件就能构建出一个窗口了。QMainWindow窗口界面示意图如下:

        由于中心部件就是QWidget控件本身,而QWidget的作用就是接纳各种控件,本质上和新建一个QWidget项目的使用逻辑是一样的(关于QWidget请看:Qt_QWidget的基本使用),因此下文就不再描述中心部件的使用了。

1、菜单栏QMenuBar

        Qt中的菜单栏是通过QMenuBar类来实现的,⼀个主窗⼝最多只有⼀个菜单栏,位于窗口标题栏下⾯。其中菜单栏中可以有多个菜单,而菜单下可以有多个项目,当然菜单里也可以有子菜单,他们的关系如下图:

        菜单栏的类是QMenuBar,菜单的类是QMenu,菜单项的类是QAction(此处菜单项实际上就是一个项目,只不过该项目在菜单中,因此叫做菜单项)。

1.1 使用QMainWindow的准备工作 

        在使用QMainWindow前,必须要在Qt创建QMainWindow项目,步骤很简单,在新建项目后选择界面类的信息时选择QMainWindow即可,如下图:


        后续一直点击下一步就能够自动生成相关文件和代码,如下图: 

        关于这里的代码和文件的含义可以移步至此处了解:Qt中QWidget的创建和使用,此处的代码和文件只不过将QWidget换成了QMainWindow,使用原则都是一样的。

1.2 在ui文件中设计窗口 

        可以在ui文件中对QMainWindow做一些设计,这种方式简单明了,能够直接观察出效果,效果图如下:

        运行结果:

1.3 在代码中设计窗口

        除了直接在ui文件中设计窗口,还可以用代码的形式来设计窗口,首先new一个QMenuBar,然后将该QMenuBar通过调用setMenuBar接口设置到当前的窗口中,在MainWindow.cpp下实现代码,代码如下:

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

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //创建菜单栏
    QMenuBar* menubar = new QMenuBar(this);
    this->setMenuBar(menubar);//设置到当前的窗口中

    //添加菜单,菜单的类是QMenu
    QMenu* menu1 = new QMenu("保存",this);
    QMenu* menu2= new QMenu("编辑",this);
    menubar->addMenu(menu1);
    menubar->addMenu(menu2);

    //添加项目至菜单中
    QAction* action1 = new QAction("菜单项1");
    QAction* action2 = new QAction("菜单项2");
    menu1->addAction(action1);
    menu1->addAction(action2);
}

MainWindow::~MainWindow()
{
    delete ui;
}

        运行结果:

1.4 实现点击菜单项的反馈

        在正常的窗口使用中,往往是点击一个菜单项后会得到相应的反馈,这需要绑定菜单项的信号与槽,这里简单的模拟该反馈,代码如下:

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

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //创建菜单栏
    QMenuBar* menubar = new QMenuBar(this);
    this->setMenuBar(menubar);

    //添加菜单,菜单的类是QMenu
    QMenu* menu1 = new QMenu("保存",this);
    QMenu* menu2= new QMenu("编辑",this);
    menubar->addMenu(menu1);
    menubar->addMenu(menu2);

    //添加项目至菜单中
    QAction* action1 = new QAction("菜单项1");
    QAction* action2 = new QAction("菜单项2");
    menu1->addAction(action1);
    menu1->addAction(action2);

    //实现菜单项的信号,在MainWindow.h头文件中声明了QAction_tri函数
    connect(action1,&QAction::triggered,this,&MainWindow::QAction_tri);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::QAction_tri()
{
    qDebug()<<"实现菜单项1的功能";
}

        运行结果:

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安权_code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值