¿Cómo hacer que un widget Qt crezca con el tamaño de la ventana?

89

Quiero tener un pequeño QFormLayoutque crezca para llenar su widget principal.

Creé un nuevo archivo .ui usando la QWidgetplantilla en Qt Designer. Puse una QFormLayoutdentro de esa 'ventana', luego puse algunos controles dentro de ella QFormLayout.

Todo esto funciona razonablemente bien, pero QFormLayoutsiempre se mantiene en el tamaño que configuré en Qt Designer. Me gustaría QFormLayoutque llene su widget principal y crezca / encoja con él.

¿Cómo puedo lograr eso?

bastibe
fuente

Respuestas:

130

En Designer, active el widget central y asigne un diseño, por ejemplo, diseño horizontal o vertical. Entonces su QFormLayout cambiará de tamaño automáticamente.

Imagen del diseñador

¡Siempre asegúrese de que todos los widgets tengan un diseño! De lo contrario, el cambio de tamaño automático se romperá con ese widget.

Ver también

Los controles insisten en ser demasiado grandes y no cambiarán de tamaño en QtDesigner

Jens
fuente
13
QtDesigner puede resultar un poco confuso a veces.
bastibe
30
¡Oh, GRACIAS por eso! :-) He estado mirando QtDesigner (bueno, QtCreator, lo mismo que hay) durante media hora y no pude entender por qué mi widget central no cambia de tamaño al máximo, hasta que vi que el pequeño ícono que usted encerrado en un círculo en su respuesta tiene una marca roja de 'deshabilitado' encima un clic en el botón 'diseñar verticalmente' en la barra de herramientas del creador y el problema se soluciona. Aviso primera vez que esa barra de herramientas Por cierto, fácil pasar por alto ...
SSC
8
Para comentar la respuesta de Jens: En Mac, haga clic en el widget de nivel superior (no necesariamente llamado "centralWidget"), luego haga clic en "Formulario" en la barra de menú y seleccione uno de los diseños.
hnasarat
2
Si alguien todavía se está preguntando, esto se hace en Windows en QT5.8 / QT Creator 4.2.1 haciendo clic en el "widget central" de nivel superior (que tiene una pequeña marca roja) y luego yendo a Herramientas> Editor de formularios> Diseño Verticalmente (u horizontalmente).
LeoR
41

Descubrí que era imposible asignar un diseño al widget central hasta que hubiera agregado al menos un niño debajo de él. Luego, podría resaltar el pequeño ícono con la marca roja 'deshabilitado' y luego hacer clic en un diseño en la barra de herramientas del Diseñador en la parte superior.

Jillian Beuschel Marohnic
fuente
4
Esto es enloquecedor. Asignar un diseño al widget central debería ser la operación más trivial en Qt Creator. En su lugar, hacerlo requiere la combinación de esta solución altamente intuitivo con Jens ' solución igualmente poco intuitivo ( en ese orden exacto ). Si bien la automatización proporcionada por Qt Creator aún supera a la repetición repetitiva por un amplio margen, piratear su terrible experiencia de usuario (UX) me ha dado un nuevo movimiento visual.
Cecil Curry
@Cecil Curry, incluso después de esa solución, me tomó 20 minutos darme cuenta de lo que debería ... porque centralWidget solo en el caso de que no haya una opción de menú contextual para agregar diseño ... solo un botón micriscópico en la barra de herramientas que parece casi inactivo
Swift - Friday Pie
3
Escribiendo este comentario ya que incluso después de las soluciones aquí, tuve problemas para encontrar la opción. Debe seleccionar el widget central, luego hacer clic con el botón derecho en un espacio libre de su aplicación, ir a 'Diseño' en el menú contextual que se abrió y luego seleccionar el diseño que desee. Esto funcionó para mí, al menos (QT5, usando QT Designer 5.11.1).
kushy
11

La respuesta aceptada (su imagen) es incorrecta, al menos ahora en QT5. En su lugar, debe asignar un diseño al objeto / widget raíz (apuntando a la imagen mencionada anteriormente, debería ser el en MainWindowlugar de centralWidget). También tenga en cuenta que debe tener al menos uno QObjectcreado debajo para que esto funcione. Haga esto y su interfaz de usuario responderá al cambio de tamaño de la ventana.

Nikos
fuente
0

Debe cambiar el tipo de diseño predeterminado del objeto QWidget de nivel superior del tipo de diseño de ruptura a otros tipos de diseño (diseño vertical, diseño horizontal, diseño de cuadrícula, diseño de formulario). Por ejemplo: ingrese la descripción de la imagen aquí

A algo como esto:

ingrese la descripción de la imagen aquí

Linh Dao
fuente