2012-07-08 71 views
1

我有一個gridlayout裏面的scrollArea,我添加QLabels與它的圖像。當應用程序啓動時,它可以正常工作並正確顯示標籤:GridLayout + ScrollArea小部件位置大小後的位置

when starting 注:我計算當前佈局空間上有多少標籤。

如果我最大限度地發揮它的作品太細: when i maximize

但是,當我打恢復奇怪的事情發生了: after restore

你可以看到,只有6標籤添加(同在第一屏鏡頭),但在這裏他們都被放置在彼此重疊。

這是ScrollArea和佈局的初始化代碼:

self.scrollArea = QtGui.QScrollArea(self.centralwidget) 
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Ignored, QtGui.QSizePolicy.Ignored) 
sizePolicy.setHorizontalStretch(0) 
sizePolicy.setVerticalStretch(0) 
sizePolicy.setHeightForWidth(self.scrollArea.sizePolicy().hasHeightForWidth()) 
self.scrollArea.setSizePolicy(sizePolicy) 
self.scrollArea.setAutoFillBackground(True) 
self.scrollArea.setStyleSheet(_fromUtf8("border: 1px solid blue")) 
self.scrollArea.setWidgetResizable(True) 
self.scrollArea.setObjectName(_fromUtf8("scrollArea")) 
self.gridLayoutWidget = QtGui.QWidget() 
self.gridLayoutWidget.setGeometry(QtCore.QRect(0, 0, 667, 551)) 
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Ignored, QtGui.QSizePolicy.Preferred) 
sizePolicy.setHorizontalStretch(0) 
sizePolicy.setVerticalStretch(0) 
sizePolicy.setHeightForWidth(self.gridLayoutWidget.sizePolicy().hasHeightForWidth()) 
self.gridLayoutWidget.setSizePolicy(sizePolicy) 
self.gridLayoutWidget.setLayoutDirection(QtCore.Qt.LeftToRight) 
self.gridLayoutWidget.setAutoFillBackground(True) 
self.gridLayoutWidget.setStyleSheet(_fromUtf8("border: 1px solid red")) 
self.gridLayoutWidget.setObjectName(_fromUtf8("gridLayoutWidget")) 
self.scrollArea.setWidget(self.gridLayoutWidget) 

回答

0

所以感謝#pyqt freenode上(喊出阿瓦里斯)我現在知道問題是什麼。它似乎是QGridLayout中的一個錯誤。

當我們最大化窗口QGridLayout結束了12列,當我們做恢復,即使每個項目被刪除佈局仍然假設12列,所以在圖片3它顯示6圖像,但認爲它需要顯示12所以它只是重疊其他的。