2011-03-02 23 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()