繁体   English   中英

如何在 QVboxLayout 中的小部件之间添加自定义空间?

[英]How to add custom space between widgets in QVboxLayout?

我正在尝试将最后 2 个小部件(btn1、btn2)与 vbox 布局中的小部件 rest 分开。 我将 insertSpacing 与下面小部件的索引一起使用,但它将两个小部件都向下移动了 500。如何将 btn1 向下移动 20 并将 btn2 向下移动 500?

filter_layout = QVBoxLayout()

data_filters = [label1, combo1, label2, combo2, label3, combo3, label4, combo4, label5, combo5, btn1, btn2]
[filter_layout.addWidget(wg) for wg in data_filters]

filter_layout.insertSpacing(10, 20)
filter_layout.insertSpacing(11, 500)

filter_layout.addStretch()

Qt 布局管理器使用称为QLayoutItem的抽象项目来表示由布局管理的元素。

这些项目通常包含小部件,但它们也可以包含其他布局或间隔QSpacerItem )。

在您的情况下发生的是,当您调用以下行时:

filter_layout.insertSpacing(10, 20)

您在索引 10 和 11 的元素之间插入一个间隔项,因此下一次插入实际上是在您添加的那个间隔之后,因为这就像您在最后两个元素之间添加了一个空小部件。
正如您可能已经想到的那样,知道所有这些很容易找到解决方案:您可以设置下一个间隔器来计算索引插入,或者颠倒插入顺序。

filter_layout.insertSpacing(10, 20)
filter_layout.insertSpacing(12, 500)

# or, alternatively:
filter_layout.insertSpacing(11, 500)
filter_layout.insertSpacing(10, 20)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM