QMainWindow构建-04

一、在此主要使用代码来创建对应的控件

1、Qt 利用代码所创建的如:按钮、菜单栏、工具栏 等等控件,默认都是独立于主窗口的,需要将其加入到主窗口中去:即设置其父对象parent为主窗口。

2、不在构造函数或Qt Designer中创建的控件,如通过代码来在自定义的函数中new出来的控件,且该函数未被构造函数调用,则new出来的控件不会显示出来。此时需要调用show()函数才能让让该控件显示出来

2、在将创建的工具栏、菜单栏、浮动窗口、按钮、中心部件等控件加入到窗口中时,若该控件只能有一个,则其前缀为set开头,一般为setXXXX;若该控件可以有多个,则其前缀为add,一般为addXXXX


二、创建一个文本编辑应用程序的QMainWindow

文件结构及代码内容如下:
1、01_QMainWindow.pro文件
在这里插入图片描述
2、mainwindow.h文件在这里插入图片描述
3、main.cpp文件
在这里插入图片描述
4、mainwindow.cpp文件。所有的代码都添加到该文件下,其它的文件都保持默认。

#include "mainwindow.h"
#include<QMenuBar> // 创建菜单栏,首先要包含该菜单栏头文件
#include<QToolBar> // 包含对应头文件
#include<QPushButton>
#include<QStatusBar>
#include<QLabel>
#include<QTextEdit>
#include<QDockWidget>


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    resize(1600,1200);

    /*************************  1、创建菜单栏  ******************/
    //创建菜单栏:菜单栏最多只能有一个
    //利用系统提供的方法,已经被写到对象树中,无需再释放。
    QMenuBar *bar=menuBar();
    setMenuBar(bar);//将创建的菜单栏加入到窗口中

    //为创建的菜单栏添加对应的内容,该创建方式会有一个对应指针类型的返回值
    QMenu *fileMenu = bar->addMenu("File");
    QMenu *editMenu = bar->addMenu("Edit");

    //创建菜单项的子内容,用到上面的返回指针
    fileMenu->addAction("Create");
    fileMenu->addSeparator();//两子项间添加分割线
    fileMenu->addAction("Open");

    /************************  2、创建工具栏   ******************/
    // 工具栏可以有多个,并可以拖拽,移动其位置
    // 创建工具栏,并将其放到对象树中
    QToolBar *toolBar=new QToolBar(this);
    addToolBar(toolBar);// 将工具栏放入窗口中,默认在上面
    //addToolBar(Qt::LeftToolBarArea,toolBar); 将其放在窗口左边。
    // 设置工具栏不可以浮动
    toolBar->setFloatable(false);

    // 向工具栏中添加内容
    toolBar->addAction("项目");
    toolBar->addSeparator();
    toolBar->addAction("复制");
    //向工具栏中添加控件,如:按钮
    QPushButton *btn01=new QPushButton("放大",this);//创建按钮
    toolBar->addWidget(btn01);//将按钮控件添加到工具栏中

    /*************************  3、创建状态栏   *****************/
    //状态栏最多只能有一个
    QStatusBar *stBar=statusBar();
    setStatusBar(stBar); //将状态栏加入到窗口
    //创建标签控件,并将其放入到状态栏中
    QLabel *label01=new QLabel("提示信息",this,Qt::Widget);
    stBar->addWidget(label01);//默认放在左边
    QLabel *label02=new QLabel("错误信息",this,Qt::Widget);
    stBar->addPermanentWidget(label02);//此时将标签放在右边

    /*******  4、设置中心部件,即核心工作区域,只能有一个  ********/
    QTextEdit *textEdit=new QTextEdit(this);//创建一个文本编辑控件作为中心部件
    setCentralWidget(textEdit);//将文本编辑部分加入窗口

    /*******  5、浮动窗口,也叫铆接部件,可以被单独拖拽出来,可以有多个   ********/
    //创建一个浮动窗口,类似于工具栏,可以设置其位置
    QDockWidget *dockWidget=new QDockWidget(this);
    addDockWidget(Qt::BottomDockWidgetArea,dockWidget);//将其加入到主窗口,放在中心部件下面
    //浮动窗口默认可以向任意方向拖拽,可以设置其只能拖拽到指定位置,类似于工具栏。如设置只能上下拖拽
    dockWidget->setAllowedAreas(Qt::TopDockWidgetArea|Qt::BottomDockWidgetArea);

}

MainWindow::~MainWindow()
{

}


三、应用程序界面如下

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值