Frage

Ich habe ein QLabel und ein QLineEdit in einem QWidget. Als ich das Widget in einem QScrollArea haben, wird die Linie bearbeiten nicht erweitern, um die überschüssige Breite des Fensters zu besetzen. Wenn das Widget nicht im Scroll-Bereich ist, ist es zu erweitern.

Ich habe versucht, die Größe Politik der Linie bearbeitet Einstellung und das Widget, horizontal zu erweitern, aber es nicht besetzt den überschüssigen Raum. Ich vermute, die sizeHint () des Widgets wird verdichtet, wenn in einem Scroll-Bereich. Irgendwelche Ideen, wie diese Arbeit machen?

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)
War es hilfreich?

Lösung

Ich glaube, ich Ihr Problem gelöst haben.

Nehmen Sie die folgende Ergänzung zu Ihrem Code und es sollte richtig verhalten:

    ...

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

    ...

Von der docs ,

  

widgetResizable: bool

     

Diese Eigenschaft enthält, ob der Scroll-Bereich die Ansicht Widget Größe ändern sollte.

     

Wenn diese Eigenschaft auf true gesetzt ist, wird der Scroll-Bereich auf das Widget, um zu vermeiden, Bildlaufleisten automatisch die Größe, wo sie vermieden werden können, oder nutzen Sie zusätzlichen Platz zu nehmen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top