文章标题

QT5 QMainWindow程序

详解如何在QMainWindow程序中添加菜单栏、工具栏、状态栏、浮动窗口以及工作区文本编辑器控件。

#include "mainwindow.h"
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QDebug>
#include <QToolBar>
#include <QPushButton>
#include <QStatusBar>
#include <QLabel>
#include <QTextEdit>
#include <QDockWidget>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    //设置主窗口大小
    resize(500,500);
    //添加菜单栏
    QMenuBar *mBar = menuBar();\
    //添加一级菜单“文件”
    QMenu *pFile = mBar->addMenu("文件");
    //添加菜单项“新建”,添加动作(该动作只作为测试用)
    QAction *pNew= pFile->addAction("新建");

    connect(pNew,QAction::triggered,
            []()
            {
               qDebug() << "新建按下";
            }
            );
    pFile->addSeparator();//添加菜单项之间的分割线
    //添加第二个菜单项“打开”,未设置动作
    QAction *pOpen = pFile -> addAction("打开");
    //添加工具栏
    QToolBar *toolBar = addToolBar("toolBar");
    //在工具栏中添加快捷键,pNew是“新建”的指针
    //此时该快捷键只是“新建”这两个字,不是按钮或者图片
    toolBar->addAction(pNew);

    //新建一个按钮对象b
    QPushButton *b = new QPushButton(this);
    b->setText("TnT");
    //把按钮b添加到工具栏
    toolBar->addWidget(b);

    //按钮b被按下时,改变b的显示内容
    connect(b,&QPushButton::clicked,
            [=]()
           {
              b->setText("^_^");
            }
            );

    //添加状态栏
    QStatusBar *sBar = statusBar();

    //新建一个标签
    QLabel *label = new QLabel(this);
    label->setText("这是状态栏");

    //把标签label添加到状态栏
    //addWidget从左向右添加状态栏项
    sBar->addWidget(label);

    //直接在addWidget时建立标签
    sBar->addWidget(new QLabel("This is the StatusBar!",this));
    //addPermanentWidget从右向左添加状态栏项
    sBar->addPermanentWidget(new QLabel("从右向左添加的状态栏项"));

    //新建一个文本编辑器
    QTextEdit *textEdit = new QTextEdit(this);
    //把文本编辑器添加到工作区
    setCentralWidget(textEdit);

    //新建浮动窗口
    QDockWidget *dock = new QDockWidget(this);
    //浮动窗口位置设置为主窗口上部
    addDockWidget(Qt::TopDockWidgetArea,dock);

    //在浮动窗口添加一个文本编辑器,,
    QTextEdit *textEdit1 = new QTextEdit(this);
    dock->setWidget(textEdit1);
}

MainWindow::~MainWindow()
{

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章