qt layout 中 insertspacing addspacing insertstretch addstretch qspaceritem 空白空间管理及拉伸与位置布局

69 篇文章 12 订阅

参考博客:https://blog.csdn.net/liang19890820/article/details/51614868

insertspacing addspacing insertstretch addstretch  是layout中原本就有的。

stretch 能让加入的地方空白按比例一致;

spacing是设置具体多少像素的间隔 ,后续不管怎么拉伸都无法修改这个间隔;

qspaceritem就是独立的但是不显示的组件。通过设置expending ,让其达到空白间隔的目的。

通常三者结合使用。

 

QT Layout 拉伸是指在布局管理对控件大小的一种调整策略,目的是为了使得某个控件能够填充剩余的空间,并适应窗口的大小变化。当一个布局包含多个控件时,通常需要分配一定的空间给每个控件,使得界面既美观又合理。 在 Qt 拉伸属性主要用于线性布局(如 `QHBoxLayout` 和 `QVBoxLayout`)。通过设置某个控件的拉伸比例(stretch),可以控制该控件相对于其他控件如何占用额外的空间: ### 设置拉伸 在创建布局后添加控件时,你可以直接指定拉伸值来增加某控件占据空余空间的能力。例如,在 `QVBoxLayout` 向底部添加一个新的按钮时: ```cpp QPushButton *button = new QPushButton("Button"); layout->addWidget(button); ``` 这里默认的拉伸值是 0,表示不会自动拉伸以获取额外空间。若要让这个按钮占据更多的空间,可以修改其拉伸值: ```cpp int stretchValue = 1; layout->addStretch(stretchValue); // 添加一个具有拉伸值的空白区域 ``` 如果希望按钮能占据更多剩余空间: ```cpp layout->addWidget(button, QSizePolicy::Expanding); // 使用自适应大小策略并设定拉伸值 ``` 这将使得按钮尽可能占据更多的可用空间,并且如果有多个具有同样设置的按钮或其他组件在同一行或列,则它们会按照各自的拉伸值比例分配空间。 ### 实例说明 假设我们有一个垂直布局,并且有三个按钮分布在其: ```cpp QVBoxLayout* vLayout = new QVBoxLayout(this); QPushButton* button1 = new QPushButton("Button 1"); vLayout->addWidget(button1); QPushButton* button2 = new QPushButton("Button 2"); vLayout->addWidget(button2); // 第三个按钮使用自适应大小策略和拉伸值 QPushButton* button3 = new QPushButton("Button 3"); vLayout->addWidget(button3, QSizePolicy::Expanding, 2); // 显示当前布局 qDebug() << "Current size policy of button3:" << button3->sizePolicy(); ``` 在这个例子,按钮3会获得较大的空间,因为它同时设置了自适应大小策略和较高的拉伸值(在这里为2),这意味着它比其他按钮更容易占用额外的空间。而按钮1和按钮2则会平分剩余空间。 ### 相关问题: 1. QT 如何区分控件之间的默认尺寸和拉伸尺寸? 2. 在哪种场景下优先考虑使用布局拉伸而不是固定尺寸? 3. 如何避免布局拉伸导致的布局混乱或异常情况?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值