ScrollArea中的自定义小部件正在被压缩!

时间:2011-03-02 06:23:40

标签: python qt pyqt pyqt4 qwidget

我有一个qscrollarea,并且在qgridlayout中。在网格布局中,我创建了许多自定义小部件(为简单起见,这些小部件只是一个组框和一个标签),并在每一行上添加一个。

自定义小部件不是显示垂直滚动条,而是全部压缩以适应滚动区域的大小。

我使用以下方法将自定义小部件添加到滚动区域:

    def addBookWidget(self):
    self.book_grid = QtGui.QGridLayout(self.book_scrollArea)

    widget = py_BookWidget(self.book_scrollArea)
    widget2 = py_BookWidget(self.book_scrollArea)
    widget3 = py_BookWidget(self.book_scrollArea)
    widget4 = py_BookWidget(self.book_scrollArea)
    widget5 = py_BookWidget(self.book_scrollArea)
    widget6 = py_BookWidget(self.book_scrollArea)
    widget7 = py_BookWidget(self.book_scrollArea)


    self.book_grid.addWidget(widget,0,0)
    self.book_grid.addWidget(widget2,1,0)
    self.book_grid.addWidget(widget3,2,0)
    self.book_grid.addWidget(widget4,3,0)
    self.book_grid.addWidget(widget5,4,0)
    self.book_grid.addWidget(widget6,5,0)
    self.book_grid.addWidget(widget7,6,0)
    self.book_scrollArea.setLayout(self.book_grid)

    widget.show()
    widget2.show()
    widget3.show()
    widget4.show()
    widget5.show()
    widget6.show()
    widget7.show()

自定义小部件扩展了QWidget并重新实现了sizeHint:

class py_BookWidget(QtGui.QWidget):
def __init__(self, parent=None):
    super(py_BookWidget, self).__init__(parent)
    self.book = Ui_book_widget()  
    self.book.setupUi(self)  #This is loading my QT Designer Code

def sizeHint(self):
    print "test"
    return QtCore.QSize(660, 300)

正在调用sizeHint方法,但小部件仍然被压扁到更小的高度。自定义小部件中的所有元素都具有固定的宽度和高度,最小和最大高度和宽度设置为660,300。

任何人都有建议尝试?谢谢!

其他信息: 滚动区域位于MainWindow中,widgetResizable布尔值设置为False。

明天我将尝试删除自定义小部件,看看我是否可以让scrollArea使用常规小部件。

1 个答案:

答案 0 :(得分:1)

QScrollArea只接受一个小部件。没有布局。

将布局和小部件添加到普通的QWidget中,然后使用setWidget()将其添加到QScrollArea