gpt4 book ai didi

PyQt4 - 如何动态调整Qt Layouts的大小

转载 作者:行者123 更新时间:2023-12-02 05:32:07 26 4
gpt4 key购买 nike

所以我一直在尝试做的是生成小部件列表,将它们添加到网格布局,然后将它们添加到选项卡并呈现给用户。我现在遇到的问题是网格布局跨越每个选项卡的整个页面,但我没有那么多行要添加,所以这些行最终跨越了整个页面并且不会与顶部对齐。我尝试设置对齐方式和垂直间距,但都没有改变小部件的显示方式。

例如:

我希望小部件显示如下:

WidgetName WidgetLabel 
WidgetName WidgetLabel
WidgetName WidgetLabel
WidgetName WidgetLabel

相反,我得到了这个:

WidgetName WidgetLabel


WidgetName WidgetLabel


WidgetName WidgetLabel


WidgetName WidgetLabel

有没有办法强制所有元素到顶部或任何所需的方向?

最佳答案

默认情况下,布局将占用其父部件允许的全部空间。我通常会做的是将网格放在另一个布局中并在末尾添加一些拉伸(stretch)。

class Widget(QtGui.QWidget):

def __init__(self, parent=None):
super(Widget, self).__init__(parent)

mainLayout = QtGui.QVBoxLayout(self)

grid = QtGui.QGridLayout()
# you can directly control the spacing here
grid.setSpacing(20)

for row in xrange(5):
grid.addWidget(QtGui.QLabel("Text"), row, 0,
1, 1, QtCore.Qt.AlignTop)
grid.addWidget(QtGui.QLabel(str(row)), row, 1,
1, 1, QtCore.Qt.AlignTop)

mainLayout.addLayout(grid)
mainLayout.addStretch()

拉伸(stretch)会吃掉所有剩余的可用空间并将网格挤压到顶部。这样做的好处是,您不必向网格本身添加任何其他异常。拉伸(stretch)是父布局的一部分。

现在 setSpacing 可以让您精确控制将空间推回到项目中。

关于PyQt4 - 如何动态调整Qt Layouts的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12223452/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com