2017-11-06 38 views
1

QScrollArea에 문제가 있으며 위젯의 크기가 조정됩니다. 내 스크롤 영역 내부의 모든 레이아웃과 위젯을 고정 된 높이로 유지하기를 원합니다. scroll.setWidgetResizable (True)를 설정하면 얼마나 많은 위젯이 생성되었는지에 따라 크기가 조정됩니다. False로 설정하면 내 위젯이 나타나지 않습니다. 여기에 내 코드의 샘플입니다Pyside : QScrollArea 위젯 크기 조정

container = QtWidgets.QWidget() 
list_layout = QtWidgets.QVBoxLayout() 
container.setLayout(list_layout) 
scroll = QtWidgets.QScrollArea() 
scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) 
scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) 
scroll.setWidgetResizable(True) 
scroll.setWidget(container) 

for x in range 10: 
    product_container = QtWidgets.QFrame() 
    product_container .setFixedHeight(50) 
    row = QtWidgets.QHBoxLayout(product_container) 
    name = QtWidgets.QLabel(y) 
    cbox = QtWidgets.QCheckBox() 
    row.addWidget(name) 
    row.addWidget(cbox) 
    seperator = QtWidgets.QFrame() 
    separator.setFrameStyle(QtWidgets.QFrame.HLine | QtWidgets.QFrame.Plain) 
    list_layout.addWidget(product_container) 
    list_layout.addWidget(separator) 

I 작업을 수행하는 (고정 된 크기를 가지고 수평 레이아웃, 내 생성 된 컨테이너를 설정하려고 - 나는 배경 색상을 설정하면이 박스 내 위젯 주변에 작은 표시) 그러나 수평 레이아웃과 QFrame 라인 사이의 공간은 여전히 ​​무작위입니다.

내 최종 목표는, 행이 고정 된 높이가있는 경우 내 수평 레이아웃과 분리

enter image description here

enter image description here

+0

"가로 레이아웃과 QFrame 라인 사이의 공간이 여전히 무작위 인"것으로 관찰 된 이미지 – eyllanesc

+0

가로 배치 – ghost654

+0

@ ghost654에서 컨테이너 위젯의 배경색을 보여주는 이미지가 추가되었습니다. 내 대답이 당신의 문제를 해결합니까? 귀하의 질문에 코드를 기반으로하지만 그 스크린 샷을 생성하는 코드와 같은지 여부는 확실하지 않습니다. – ekhumoro

답변

2

사이에 고정 된 거리를 가지고 당신이해야 할 모든입니다에 추가입니다 컨테이너의 레이아웃 끝까지의 확장 가능한 공간으로, 행이 모두 위쪽으로 푸시됩니다.

container = QtWidgets.QWidget() 
list_layout = QtWidgets.QVBoxLayout() 
container.setLayout(list_layout) 
... 
for x in range(10): 
    ... 
    list_layout.addWidget(separator) 
list_layout.addStretch()