尺寸更改后网格布局+ ScrollArea部件位置(GridLayout+ScrollArea wi

2019-09-19 05:50发布

我有一个内含网格布局一个scrollArea,我添加QLabels将其与图像。 当应用程序启动时,它工作正常,并正确显示标签:

注:我估计很多标签如何适应于当前布局空间。

如果我最大限度地发挥它的作品太细:

但是,当我打恢复奇怪的事情发生了:

你可以看到,只有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)

Answer 1:

因此,由于在freenode #pyqt(喊出阿瓦里斯)我现在知道问题是什么。 这似乎是在QGridLayout的错误。

当我们最大限度QGridLayout有12列结束了,当我们的窗口,虽然每一个项目被删除恢复,甚至布局仍假定12列,所以在画面3是显示6倍的图像,但认为它需要显示12所以它只是重叠其他的人。



文章来源: GridLayout+ScrollArea widget position after size change