1. 窗口应用布局样式及组成
PC端软件,最基本的一个窗口应用布局样式,如下:
大体可分为菜单栏、工具栏、状态栏、核心窗口、浮动窗口,使用时按需相互组合。
2. Qt中调用这些控件
1)新建一个工程:使用QMainWindow类。
2)例程源码:(具体使用方法在注释里)
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QMenuBar>
#include <QMenu>
#include <QAction>
#include <QDebug>
#include <QToolBar>
#include <QPushButton>
#include <QStatusBar>
#include <QLabel>
#include <QTextEdit>
#include <QDockWidget>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
resize(480, 320);
setWindowTitle("Hello");
// 菜单栏,菜单栏在工程中已经有力的,直接调用函数就行,不用add
QMenuBar *mBar = menuBar();
// 添加菜单(菜单栏里的对象),返回项目指针
QMenu *pFile = mBar->addMenu("文件");
// 添加菜单项(菜单栏里的项目,对对象的操作),并且添加动作
QAction *pNew = pFile->addAction("新建");
connect( pNew, &QAction::triggered,
[=]()
{
qDebug() << "新建被按下";
});
pFile->addSeparator();// 添加分割线
// 添加菜单项(菜单栏里项目的项目),并且添加动作
QAction *pOpen = pFile->addAction("打开");
connect( pOpen, &QAction::triggered,
[=]()
{
qDebug() << "打开被按下";
});
// 工具栏,实质上是菜单项的快捷方式
QToolBar *toolBar = addToolBar("toolBar");
// 工具栏添加快捷键(直接将菜单项指针复制过来)
toolBar->addAction(pNew);
// 添加按钮到工具栏(平常软件中带图标的快捷方式都是按钮,)
QPushButton *btnNew = new QPushButton;
btnNew->setText("新建");
toolBar->addWidget(btnNew);
// 添加信号槽
connect( btnNew, &QPushButton::clicked,
[=]()
{
btnNew->setText("Done!");
});
// 状态栏,#include <QStatusBar>
QStatusBar *sBar = statusBar();
// 状态栏的项目叫做标签,#include <QLabel>
QLabel *label = new QLabel(this);
label->setText("Normal text file");
// 从左往右依次添加
sBar->addWidget(label);
sBar->addWidget(new QLabel("New label", this));
// 从右往左依次添加
sBar->addPermanentWidget(new QLabel("Right label", this));
// 核心控件。文本框,#include <QTextEdit>
QTextEdit *textEdit = new QTextEdit(this);
setCentralWidget(textEdit);// 设立中心
// 浮动窗口,#include <QDockWidget>
QDockWidget *dock = new QDockWidget(this);
// 防止在窗口右侧
addDockWidget(Qt::RightDockWidgetArea, dock);
// 浮动窗口中添加控件,文本编辑区
QTextEdit *textEditDock = new QTextEdit(this);
dock->setWidget(textEditDock);
}
MainWindow::~MainWindow()
{
}
3)运行现象:(状态栏、浮动窗口都可以拖动)