如何在Qt中使用垫片

alp*_*ric 6 python qt pyqt

我有一个QGroupBox分配给它QVBoxLayout.

groupBox = QtGui.QGroupBox()
layout = QtGui.QVBoxLayout()
groupBox.setLayout(layout )
Run Code Online (Sandbox Code Playgroud)

然后有一个QLabel分配给布局.

label = QtGui.QLabel()   
layout.addWidget(label)
Run Code Online (Sandbox Code Playgroud)

问题是QLabel位于GroupBox的中间位置.虽然我希望它与GroupBox的上边缘对齐.我可能需要添加某种间隔物.因此,spacer会动态调整自身大小以填充GroupBox的空白区域,向上推动QLabel.

什么小部件和什么尺寸的政策应该用作间隔?

Ach*_*yan 12

label = QtGui.QLabel()   
layout.addWidget(label)
verticalSpacer = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
layout.addItem(verticalSpacer)
Run Code Online (Sandbox Code Playgroud)

这应该工作

  • `layout.addStretch()`. (4认同)

小智 5

在pyQt5中,QSpacerItemQSizePolicy类现在是QtWidgets的一部分,因此您希望以这种方式创建垂直间隔器...

verticalSpacer = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) 
Run Code Online (Sandbox Code Playgroud)