一 QSplitter类
Qt提供QSplitter(QSplitter)类来进行分裂布局,QSplitter派生于QFrame。
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
};
#endif // MAINWINDOW_H
//
#include "mainwindow.h"
#include <QSplitter>
#include <QTextEdit>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
// 1:拆分窗口(分割窗口、分裂窗口布局)
QSplitter *spMainWindow=new QSplitter(Qt::Horizontal,0);
QTextEdit *txteditmain=new QTextEdit("左边主窗口",spMainWindow);
// 2:拆分右边部分窗口
QSplitter *spRight=new QSplitter(Qt::Vertical,spMainWindow);
QTextEdit *txteditup=new QTextEdit("右边上部分窗口",spRight);
QTextEdit *txteditdown=new QTextEdit("右边下部分窗口",spRight);
// 3:
QSplitter *sptest=new QSplitter(Qt::Vertical,spRight);
QTextEdit *txtedittest=new QTextEdit("零声教育-Qt开发工程师课程",sptest);
// 4:
QSplitter *sptestend=new QSplitter(Qt::Horizontal,spMainWindow);
QTextEdit *txtedittestend=new QTextEdit("Qt开发工程师课程--Vico老师",sptestend);
spMainWindow->setWindowTitle("Splitter类拆分窗口测试");
spMainWindow->show();
}
MainWindow::~MainWindow()
{
}
二、QDockWidget 类(停靠窗口)
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
public:
void DockWidgetFunc();
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include <QTextEdit>
#include <QDockWidget>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
DockWidgetFunc();
}
MainWindow::~MainWindow()
{
}
void MainWindow::DockWidgetFunc()
{
setWindowTitle("QDockWidget类停靠窗口测试.");
QTextEdit *tedit=new QTextEdit(this); // 定义QTextEdit对象作为主窗口
tedit->setText("国防科技大学,中南大学,湖南大学,湖南师范大学");
tedit->setAlignment(Qt::AlignCenter);
setCentralWidget(tedit); //将编辑框控件设置为主窗口的中央窗体
// 创建停靠窗口1
QDockWidget *dw1=new QDockWidget("停靠窗口(一)",this);
dw1->setFeatures(QDockWidget::DockWidgetMovable); // 可移动特性
dw1->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);
QTextEdit *qtedit1=new QTextEdit();
qtedit1->setText("浙江大学");
dw1->setWidget(qtedit1);
addDockWidget(Qt::RightDockWidgetArea,dw1);
// 创建停靠窗口2
QDockWidget *dw2=new QDockWidget("停靠窗口(二)",this);
dw2->setFeatures(QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetFloatable); // 关闭 浮动
QTextEdit *qtedit2=new QTextEdit();
qtedit2->setText("复旦大学");
dw2->setWidget(qtedit2);
addDockWidget(Qt::RightDockWidgetArea,dw2);
}