Qt深入浅出(七)QMainWindow

窗口类QMainWindow

​ 普通的桌面应用程序有个共同的特性,有菜单栏、工具栏、状态栏、中央窗口等部件。菜单栏其实可以看成是一个窗口,菜单栏中的每一个菜单也可以看成一个窗口,每个部件基本都可以认为是一个窗口。那么这些典型的桌面应用可以认为是一些QWidget的组合,通过QWidget派生的方式也确实能够完成这样的窗口。

​ 但是如果每次都自己去设计,重复这些工作,想想都有些麻烦,于是Qt帮我们实现这样的窗口,叫做QMainWindow,QMainWindow已经布置好菜单栏、工具栏、状态栏等窗口,我们只需要懂得如何去应用就行了。

  • QMainWindow的布局

注:MenuBar是菜单栏,toolbars是工具栏,Dock Widgets是停口窗口,Central Widget是中央窗口,Status Bar是状态栏

1 创建一个QMainWindow工程

  1. 在 Qt Creator 中,点击菜单”文件”

  2. 依次选择 “新建文件或项目->application->Qt widget application” 再点击 Choose…按钮

  3. 然后填写项目名称点击下一步, 到配置工具链窗口,再点击下一步.

  4. 到如图所示的窗口, 选择基类为 QMainWindow, 不勾选”创建界面”(其实也可以勾选), 如图


  5. 再点击下一步, 到版本控制窗口,然后再点击完成,那么我们的 QMainWindow 的一个工程就创建好了。

2 菜单栏应用

2.1 添加菜单栏

​ 在Qt中菜单栏类是QMenuBar,它也是继承至QWidget,菜单栏是一个长条状窗口,可以是横向也可以是纵向的,菜单栏上可以布置菜单。

  • 通过QMainWindow::MenuBar() 来获取一个QMenuBar对象的指针, 如果该对象不存在, 就新建一个对象。这个函数只能创建一个菜单栏,函数原型如下:


QMenuBar *QMainWindow::menuBar()

​ 例如:


#include "mainwindow.h"
#include <QMenubar>
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
   
   
    QMenuBar* menuBar = this->menuBar();
}

  • 也可以通过new一个QMenuBar对象,然后通过QMainWindow::setMenuBar来设置主窗口的菜单栏。


void QMainWindow::setMenuBar(QMenuBar *menuBar)

​ 例如:


#include "mainwindow.h"
#include <QMenubar>
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
   
   
    QMenuBar* menuBar = new QMenuBar;
    this->setMenuBar(menuBar);
}

2.2 添加菜单

​ 创建完菜单栏之后,就可以在菜单栏上面布置菜单了,菜单类叫作QMenu,QMenu也是继承至QWidget。

  • QMenuBar对象中添加QMenu对象可以使用函数:


QAction *QMenuBar::addMenu(QMenu *menu)   //添加一个已经创建好的QMenu对象
QMenu *QMenuBar::addMenu(const QString &title) //给定菜单标题,自动创建QMenu对象

例如:


#include "mainwindow.h"
#include <QMenubar>
#include <QMenu>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
   
   
    QMenuBar* menuBar = this->menuBar();
    QMenu *fileMenu = new 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值