我正在使用Qt Creator 3.1.2设计一个GUI,它有一个ScrollArea来显示一个Widgets列表(现在只是QLabel)。
在对象树中,我有一个QScrollArea,其中包含一个包含QVBoxLayout的QWidget。对于ScrollArea,我将verticalScrollBarPolicy设置为AsNeeded,并将widgetResizable设置为On。对于Layout,我将SizeConstraint设置为SetMinimumSize。
在我的Python程序中,我加载了GUI,然后尝试使用小部件填充布局,如下所示:
sa = self.findChild(QtGui.QVBoxLayout, "scrollList")
for i in range(1,40):
l = QtGui.QLabel("hello %s"%i)
l.setFixedHeight(40)
sa.addWidget(l)
小工具1-6出现,尺寸正确,并且看起来不会被压扁或任何东西。但是没有滚动条,我无法滚动窗口以查看下面的其他小部件。我试图强制滚动条出现,但它似乎已停用,我仍然无法滚动窗口。
如何显示滚动条和滚动窗口?
这是为ScrollArea生成的XML:
<widget class="QScrollArea" name="scrollArea">
<property name="geometry">
<rect>
<x>10</x>
<y>150</y>
<width>461</width>
<height>291</height>
</rect>
</property>
<property name="frameShape">
<enum>QFrame::WinPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAsNeeded</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>457</width>
<height>287</height>
</rect>
</property>
<widget class="QWidget" name="verticalLayoutWidget">
<property name="geometry">
<rect>
<x>-1</x>
<y>-1</y>
<width>461</width>
<height>291</height>
</rect>
</property>
<layout class="QVBoxLayout" name="scrollList" stretch="">
<property name="sizeConstraint">
<enum>QLayout::SetMinimumSize</enum>
</property>
</layout>
</widget>
</widget>
</widget>