2012-07-08 5 views
1

내부에 gridlayout이있는 scrollArea가 있으며 이미지가있는 QLabels를 추가합니다. 응용 프로그램이 시작되면 제대로 작동하고 레이블이 제대로 표시됩니다.크기 변경 후 GridLayout + ScrollArea 위젯 위치

when starting 참고 : 현재 레이아웃 공간에 맞는 레이블 수를 계산합니다.

내가 그것을 잘 너무 작동 극대화 경우 when i maximize

을하지만 뭔가 이상한 복원 명중 할 때 발생합니다 after restore

첫 번째 화면에서와 같이 단지 6 레이블이 동일 (추가 된 것을 볼 수 있습니다

총)하지만 여기서는 서로 겹치는 위치에 있습니다.

이것은 ScrollArea 및 레이아웃에 대한 초기화 코드입니다 :는 Freenode에 #pyqt하는

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

그래서 덕분에 내가 지금 문제가 무엇인지 알고 (아바리스에게 소리). QGridLayout의 버그 인 것 같습니다.

QGridLayout 창이 12 개의 열로 끝나면 모든 항목이 제거 되더라도 복원을 수행해도 레이아웃은 여전히 ​​12 개의 열로 간주되므로 그림 3에서는 6 개의 이미지가 표시되지만 12 개로 표시해야한다고 생각합니다. 그래서 다른 것들과 겹쳐집니다.