PyQt ScrollArea没有显示滚动条

时间:2014-06-30 02:52:51

标签: qt pyqt scrollbar

我正在使用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>

0 个答案:

没有答案