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