一杯清酒邀明月
天下本无事,庸人扰之而烦耳。
posts - 3121,comments - 209,views - 578万

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);
复制代码

 

posted on   一杯清酒邀明月  阅读(454)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
历史上的今天:
2020-07-10 Qt Qaction和触发函数建立连接的方法
2020-07-10 Qt QChart缩放后坐标轴间隔取整
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示