2011-03-02 19 views
3

我有一个qscrollarea,并在那个qgridlayout。在网格布局中,我创建了一些定制窗口小部件(为了简单起见,这些窗口小部件只是一个组框和一个标签),并在每一行上添加一个。ScrollArea中的自定义小部件正在被压扁!

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

我的自定义小部件添加到滚动区域在下面的方法:

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与常规小部件一起工作。

+0

我尝试添加只是一堆拨盘的scrollArea内的网格内,我得到了相同的结果。任何想法,我应该尝试什么设置?它是网格中的网格还是小部件还是scrollArea本身? – Saab 2011-03-03 02:16:56

回答

1

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

添加布局和小部件到一个普通的QWidget,然后添加到QScrollArea与setWidget()