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