qt - example - Cómo hacer que QLineEdit se expanda dentro de QScrollArea
qlineedit pyqt (1)
Tengo un QLabel y un QLineEdit dentro de un QWidget. Cuando tengo el widget dentro de un QScrollArea, la edición de línea no se expande para ocupar el ancho excesivo de la ventana. Cuando el widget no está dentro del área de desplazamiento, sí se expande.
He intentado configurar la política de tamaño de la edición de línea y el widget para expandir horizontalmente, pero no ocupa el espacio sobrante. Sospecho que el sizeHint () del widget se compacta cuando está dentro de un área de desplazamiento. ¿Alguna idea de cómo hacer que esto funcione?
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)
Creo que he resuelto tu problema.
Haga la siguiente adición a su código y debería comportarse correctamente:
...
scrollArea.setWidget(scrollWidget)
scrollArea.setWidgetResizable(True) #add this
self.setCentralWidget(scrollArea)
...
De los documentos ,
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 verdadero, el área de desplazamiento cambiará el tamaño del widget automáticamente para evitar barras de desplazamiento donde se pueden evitar, o para aprovechar el espacio adicional.