灵活分割窗口的布局,常用在类似文件资源管理器的窗口设计中。
效果图:
main.cpp
#include "qsplitter.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QSplitter w;
w.show();
return a.exec();
}
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QSplitter>
#include <QTextEdit>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QSplitter *splitterMain = new QSplitter(Qt::Horizontal, 0); // 1横向
QTextEdit *textLeft = new QTextEdit(QObject::tr("Left Widget"), splitterMain);
textLeft->setAlignment(Qt::AlignCenter);
QSplitter *splitterThree = new QSplitter(Qt::Vertical, splitterMain); // 2纵向
QTextEdit *textThree = new QTextEdit(QObject::tr("Three Widget"), splitterThree);
textThree->setAlignment(Qt::AlignCenter);
QTextEdit *textnnn = new QTextEdit(QObject::tr("nnn Widget"), splitterThree);
textnnn->setAlignment(Qt::AlignCenter);
QSplitter *splitterRight = new QSplitter(Qt::Vertical, splitterMain); // 3横向
splitterRight->setOpaqueResize(false); //分割窗口的分隔条在拖曳时是否为实时显示
QTextEdit *textUp = new QTextEdit(QObject::tr("Top Widget"), splitterRight);
textUp->setAlignment(Qt::AlignCenter);
QTextEdit *textButton = new QTextEdit(QObject::tr("Button Widget"), splitterRight);
textButton->setAlignment(Qt::AlignCenter);
splitterMain->setStretchFactor(1, 1); //控件序号为1的控件(第一个是0)设置为可伸缩控件(当整个对话框宽度发生改变时,1会随着变化)
splitterMain->setWindowTitle(QObject::tr("splitter"));
splitterMain->show();
}
Widget::~Widget()
{
delete ui;
}