Pregunta

Tengo un QLabel y una QLineEdit dentro de un QWidget. Cuando tengo el widget dentro de un QScrollArea, la línea de edición no se expande para ocupar el exceso de ancho de la ventana. Cuando el widget no está dentro del área de desplazamiento, que se expande.

He tratado de establecer la política tamaño de la línea de edición y el widget, para expandir horizontalmente, pero no ocupa el espacio sobrante. Sospecho que la sizeHint () del widget se compacta cuando dentro de una zona de desplazamiento. Alguna idea de cómo hacer este trabajo?

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)
¿Fue útil?

Solución

Creo haber solucionado el problema.

Realice la siguiente adición a su código y debe comportarse correctamente:

    ...

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

    ...

Desde el docs ,

  

widgetResizable: bool

     

Esta propiedad se cumple si el área de desplazamiento debe cambiar el tamaño del widget de vista.

     

Si esta propiedad se establece en true, el área de desplazamiento cambiará automáticamente el tamaño del widget en el fin de las barras de desplazamiento Evita, donde pueden ser evitados, o para tomar ventaja de espacio adicional.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top