GridLayout + ScrollArea小部件位置大小后的位置

GridLayout + ScrollArea小部件位置大小后的位置

问题描述:

我有一个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) 

所以感谢#pyqt freenode上(喊出阿瓦里斯)我现在知道问题是什么。它似乎是QGridLayout中的一个错误。

当我们最大化窗口QGridLayout结束了12列,当我们做恢复,即使每个项目被删除布局仍然假设12列,所以在图片3它显示6图像,但认为它需要显示12所以它只是重叠其他的。