文章標題

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()
{

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