2010-02-22 5 views
6

QWidget 내에 QLabel과 QLineEdit이 있습니다. 위젯을 QScrollArea 안에 넣으면 라인 편집이 윈도우의 초과 너비를 차지하도록 확장되지 않습니다. 위젯이 스크롤 영역 안에 있지 않으면 확장됩니다.QLineEdit를 QScrollArea 내에서 확장하는 방법

라인 편집과 위젯의 크기 정책을 수평으로 확장하려고 시도했지만 초과 공간을 차지하지 않았습니다. 스크롤 영역 내부에서 위젯의 sizeHint()가 압축되어있는 것 같습니다. 어떤 아이디어가이 작품을 만드는 방법?

class MainWindow(QtGui.QMainWindow): 
def __init__(self): 
    QtGui.QMainWindow.__init__(self, None) 
    self.setWindowTitle('Test Window') 
    self.resize(500, 250) 

    scrollArea = QtGui.QScrollArea() 
    scrollWidget = QtGui.QWidget() 
    scrollWidget.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Maximum) 

    layout = QtGui.QGridLayout(scrollWidget) 
    label = QtGui.QLabel("Name:") 
    layout.addWidget(label, 0, 0) 
    lineEdit = QtGui.QLineEdit("Value") 
    lineEdit.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Maximum) 
    layout.addWidget(lineEdit, 0, 1) 
    scrollWidget.setLayout(layout) 

    scrollArea.setWidget(scrollWidget) 
    self.setCentralWidget(scrollArea) 

답변

7

나는 당신의 문제를 해결했다고 생각합니다.

는 코드에 다음 추가를 확인하고 올바르게 행동해야 다음 docs에서

... 

    scrollArea.setWidget(scrollWidget) 
    scrollArea.setWidgetResizable(True) #add this 
    self.setCentralWidget(scrollArea) 

    ... 

,

widgetResizable : 부울을

이 속성은 보유 스크롤 영역 여부 뷰 위젯의 크기를 조정해야합니다.

이 속성을 true로 설정하면 스크롤 영역에서 스크롤 막대가 피할 수있는 곳을 피하거나 추가 공간을 활용하기 위해 위젯의 크기가 자동으로 조정됩니다.

+0

완벽! 감사! – Graeme

관련 문제