上一篇分享了如何使用布局来实现动态分屏,这一次来讲一下布局管理器中的QSplitter,分割器来实现动态分屏,代码如下:
#include "splitetest.h"
#include "ui_splitetest.h"
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QSplitter>
#include <QLabel>
spliteTest::spliteTest(QWidget *parent) :
QWidget(parent),
ui(new Ui::spliteTest)
{
ui->setupUi(this);
// QWidget *window = new QWidget;
QVBoxLayout* layout = new QVBoxLayout(this);
QSplitter *splitter = new QSplitter(Qt::Horizontal,0);
splitter->setFrameShape(QFrame::Shape::Box);
splitter->setOpaqueResize(true);
layout->addWidget(splitter);
// 创建两个子窗口
QWidget *leftWidget = new QWidget(splitter);
QWidget *rightWidget = new QWidget(splitter);
leftWidget->setStyleSheet(QString("border:2px solid blue"));
rightWidget->setStyleSheet(QString("border:2px solid red"));
// 设置子窗口的布局
QHBoxLayout* leftLayout = new QHBoxLayout(leftWidget);
leftLayout->addWidget(new QLabel("Left widget"));
leftWidget->setLayout(leftLayout);
QHBoxLayout* rightLayout = new QHBoxLayout(rightWidget);
rightLayout->addWidget(new QLabel("Right widget"));
rightWidget->setLayout(rightLayout);
// 将子窗口添加到分割器中
splitter->addWidget(leftWidget);
splitter->addWidget(rightWidget);
}
spliteTest::~spliteTest()
{
delete ui;
}
通过splitter分割器来实现动态分屏,这里实现的是二分屏,只是告诉一种方法,可以在此基础上按照实际的需求进行扩展,最终实现我们想要的效果。