2010-08-31 24 views
10

Tengo una ventana que contiene un QScrollArea con un par de widgets.Qt: cómo cambiar el tamaño de una ventana a su nuevo contenido

Hasta ahora, estaba creando el QScrollArea y sus widgets secundarios en el constructor de mi ventana, y luego estaba cambiando el tamaño de la ventana verticalmente para ajustar su contenido usando resize(400, sizeHint().height()). Hasta aquí todo bien.

Ahora, estoy agregando o quitando widgets en el QScrollArea en tiempo de ejecución. ¿Qué debo hacer, después de haber agregado o eliminado widgets, para que la ventana se ajuste verticalmente a su contenido? ¿Debo llamar al adjustSize()? resize(sizeHint())? ¿Debería haber una llamada al layout->activate() o quizás al updateGeometry() primero? ¿Qué políticas de tamaño realmente importan en este caso? ¿Los de la ventana, o del área de desplazamiento, o ambos? Traté de configurarlos todos en Expanding.

Estoy usando Qt 4.6 en Windows.

+0

¿Desea que QScrollArea no tenga barras de desplazamiento? –

+0

Absolutamente, en este momento la idea es deshacerse de la barra de desplazamiento vertical. El siguiente paso será permitir que aparezca solo si la altura total del contenido de QScrollArea es realmente demasiado grande o si el usuario cambia el tamaño de la ventana. –

Respuesta

9

Parece que llamar al resize(sizeHint()) (sin ninguna otra magia) después de agregar widgets al área de desplazamiento realmente funciona. De alguna manera se perdió eso la primera vez.

+1

Lo necesitaba para el ajuste vertical, y esto salió: 'QSize s = sizeHint(); s.setWidth (ancho()); cambiar el tamaño (s); ' – Notinlist

+0

Tal vez esto ayudará a alguien más que encuentra esta pregunta, pero tiene mi problema en su lugar. En realidad, el cuadro de diálogo cambiaba el tamaño del contenido, pero debido al tamaño de la ventana del diseñador de QT, estaba siendo cortado en la parte inferior. Cambiar el tamaño de la ventana en el diseñador de QT para permitir más espacio en la parte inferior lo solucionó – slf

Cuestiones relacionadas