1.简介
QSplitter拆分器允许用户通过拖动子部件之间的边界来控制它们的大小。
单个拆分器可以控制任意数量的小部件。QSplitter的典型用法是创建几个小部件,并使用insertWidget()或addWidget()添加它们。
2.常用方法
默认情况下,QSplitter会动态调整其子元素的大小。如果您希望QSplitter仅在调整大小操作结束时调整子元素的大小, 那么调用setOpaqueResize(false)。
void setOpaqueResize(bool opaque = true)
将子部件的各自大小设置为列表中给定的值。
如果splitter是水平的,则这些值将以像素为单位设置每个小部件的宽度,从左到右。
如果splitter是垂直的,则从上到下设置每个小部件的高度
void setSizes(const QList<int> &list)
3.示例
3.1伸缩系数
添加3个QPlainTextEdit,默认水平方式添加的,并且设置了伸缩系数,我个人理解,伸缩系数,好比,比例系数。上图比例为 2:1:1。
源码:
1 QSplitter *s1 = new QSplitter(this);
2 ui->verticalLayout->addWidget(s1);
3
4 //添加3个widget
5 QPlainTextEdit *t1 = new QPlainTextEdit(s1);
6 t1->setPlaceholderText("t1");
7
8 QPlainTextEdit *t2 = new QPlainTextEdit(s1);
9 t2->setPlaceholderText("t2");
10
11 QPlainTextEdit *t3 = new QPlainTextEdit(s1);
12 t3->setPlaceholderText("t3");
13
14 s1->addWidget(t1);
15 s1->addWidget(t2);
16 s1->addWidget(t3);
17
18 s1->setStretchFactor(0,2);
19 s1->setStretchFactor(1,1);
20 s1->setStretchFactor(2,1);
3.2 setOpaqueResize(false)效果
默认为true,效果如下
3.3QSplitter相互嵌套
源码:
1 QSplitter *mainSplitter = new QSplitter(this);
2 ui->verticalLayout->addWidget(mainSplitter);
3
4 QSplitter *rightSplitter = new QSplitter(mainSplitter);
5 rightSplitter->setOrientation(Qt::Vertical); //设置垂直方向
6
7 //添加3个widget
8 QPlainTextEdit *t1 = new QPlainTextEdit(mainSplitter);
9 t1->setPlaceholderText("t1");
10
11 QPlainTextEdit *t2 = new QPlainTextEdit(rightSplitter);
12 t2->setPlaceholderText("t2");
13
14 QPlainTextEdit *t3 = new QPlainTextEdit(rightSplitter);
15 t3->setPlaceholderText("t3");
16
17 rightSplitter->addWidget(t2);
18 rightSplitter->addWidget(t3);
19
20 mainSplitter->addWidget(t1);
21 mainSplitter->addWidget(rightSplitter);