2010-02-22 10 views
6

Mam QLabel i QLineEdit wewnątrz QWidget. Gdy widget znajduje się wewnątrz pola QScrollArea, edycja linii nie rozwija się, aby zająć nadmiarową szerokość okna. Gdy widget nie znajduje się w obszarze przewijania, rozszerza się.Jak QLineEdit poszerzyć wewnątrz QScrollArea

Próbowałem ustawienie politykę wielkości linią edycji i widget, aby rozwinąć poziomo, ale nie zajmują nadmiar miejsca. Podejrzewam, że widget sizeHint() jest kompaktowany, gdy znajduje się wewnątrz obszaru przewijania. Wszelkie pomysły, jak to działa?

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) 

Odpowiedz

7

Wierzę, że rozwiązałem twój problem.

Dodać po dodaniu do kodu i powinna zachowywać się poprawnie:

... 

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

    ... 

Z docs,

widgetResizable: bool

Ta nieruchomość posiada czy obszaru przewijania powinien zmienić rozmiar widżetu widoku.

Jeśli ta właściwość ma wartość true, obszar przewijania automatycznie zmieni rozmiar widżetu, aby uniknąć suwakami gdzie można ich uniknąć, lub do skorzystania z dodatkowej przestrzeni.

+0

Perfect! Dzięki! – Graeme

Powiązane problemy