QMainwindow组成_各部分实现

QMainWindwo组成

image-20230710193023643

菜单栏

// 头文件
#include <QMenu>
    // 创建菜单栏,有且只有一个,菜单列表,选项
    QMenuBar *menuBar = new QMenuBar(this);

    // 如果不设置菜单栏和主窗口的绑定,它只是把控件放到窗口上面
    this->setMenuBar(menuBar);

    // ALT + F 触发文件按钮
    QMenu *fileMenu = menuBar->addMenu("文件(&F)");
    menuBar->addMenu("编辑");

    fileMenu->addAction("打开");

    // 分割线
    fileMenu->addSeparator();

    QAction *closeAction = fileMenu->addAction("关闭");
    // 设置快捷键触发
    closeAction->setShortcut(QKeySequence(tr("Ctrl+4")));

    // 关闭的触发事件
    connect(closeAction, &QAction::triggered, this, &QWidget::close);

image-20230711093428845

工具栏

// 头文件
#include <QToolBar>
   // 创建工具栏
    QToolBar *toolBar = new QToolBar(this);
    /*

        ConstantValue
        Qt::LeftToolBarArea0x1
        Qt::RightToolBarArea0x2
        Qt::TopToolBarArea0x4
        Qt::BottomToolBarArea0x8
        Qt::AllToolBarAreasToolBarArea_Mask
        Qt::NoToolBarArea0
    */
    this->addToolBar(Qt::BottomToolBarArea, toolBar);
    toolBar->addAction("文件1");
    toolBar->addAction("编辑1");
    toolBar->addAction(QIcon(":/new.png"), "新建");
    QAction *actionOpen = toolBar->addAction(QIcon(":/open.png"), "打开");

	// 这里添加button控件 需要添加头文件 #include <QPushButton>
    QPushButton *btn = new QPushButton("按钮", this);
    toolBar->addWidget(btn);

    connect(actionOpen, &QAction::triggered, this, &QWidget::close);

image-20230711101756051

可以进行拖拽,进行停靠在上面或者两侧。

浮动窗口

// 头文件
#include <QDockWidget>
    // 创建浮动窗口
    QDockWidget *dock = new QDockWidget(this);
    // 绑定 指定位置信息
    this->addDockWidget(Qt::TopDockWidgetArea, dock);

image-20230711103848521

可以进行拖拽出来。

image-20230711103920052

中心部件

    // 创建中心部件
    QTextEdit *text = new QTextEdit(this); // 这里以 QTextEdit 举例,需要添加头文件 #include <QTextEdit>
    this->setCentralWidget(text);

image-20230711105221251

创建状态栏

// 头文件
#include <QStatusBar>
    // 创建状态栏
    QStatusBar *statuBar = new QStatusBar(this);
    this->setStatusBar(statuBar);

    QLabel *leftInfo = new QLabel("左侧提示信息", this); // 这里以状label 举例,需要天及头文件 #include <QLabel>
    statuBar->addWidget(leftInfo);

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

image-20230711110734048

QMainWindow代码合集

#include "mainwindow.h"

#include<QMenuBar>
#include <QWidget>

#include <QMenu>

#include <QToolBar>

#include <QPushButton>

#include <QDockWidget>

#include <QTextEdit>
#include <QStatusBar>
#include <QLabel>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{

    // 创建菜单栏,有且只有一个,菜单列表,选项
    QMenuBar *menuBar = new QMenuBar(this);

    // 如果不设置菜单栏和主窗口的绑定,它只是把控件放到窗口上面
    this->setMenuBar(menuBar);

    // ALT + F 触发文件按钮
    QMenu *fileMenu = menuBar->addMenu("文件(&F)");
    menuBar->addMenu("编辑");


    fileMenu->addAction("打开");

    // 分割线
    fileMenu->addSeparator();

    QAction *closeAction = fileMenu->addAction("关闭");
    // 设置快捷键触发
    closeAction->setShortcut(QKeySequence(tr("Ctrl+4")));


    // 关闭的触发事件
    connect(closeAction, &QAction::triggered, this, &QWidget::close);


    // 创建工具栏

    QToolBar *toolBar = new QToolBar(this);
    /*

        ConstantValue
        Qt::LeftToolBarArea0x1
        Qt::RightToolBarArea0x2
        Qt::TopToolBarArea0x4
        Qt::BottomToolBarArea0x8
        Qt::AllToolBarAreasToolBarArea_Mask
        Qt::NoToolBarArea0
    */
    this->addToolBar(Qt::BottomToolBarArea, toolBar);
    toolBar->addAction("文件1");
    toolBar->addAction("编辑1");
    toolBar->addAction(QIcon(":/new.png"), "新建");
    QAction *actionOpen = toolBar->addAction(QIcon(":/open.png"), "打开");

    QPushButton *btn = new QPushButton("按钮", this);
    toolBar->addWidget(btn);

    connect(actionOpen, &QAction::triggered, this, &QWidget::close);

    // 创建浮动窗口
    QDockWidget *dock = new QDockWidget(this);
    // 绑定 指定位置信息
    this->addDockWidget(Qt::TopDockWidgetArea, dock);

    // 创建中心部件

    QTextEdit *text = new QTextEdit(this);
    this->setCentralWidget(text);

    // 创建状态栏
    QStatusBar *statuBar = new QStatusBar(this);
    this->setStatusBar(statuBar);

    QLabel *leftInfo = new QLabel("左侧提示信息", this);
    statuBar->addWidget(leftInfo);

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

}

MainWindow::~MainWindow()
{

}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值