2012-05-21 9 views
6

¿Hay alguna manera de hacer que la propiedad layoutStretch siempre se obedezca? P.ej. Lo tengo configurado en "1,3,2", pero luego se expande un widget (una etiqueta) en la primera parte (el "1" en "1,3,2") (cuando se agrega más texto), y luego la ración 1: 3: 2 ya no se respeta. Es decir, la relación "1: 3: 2" se convierte en algo más parecido a "3: 1: 3".Cómo arreglar el tamaño de los diseños

Respuesta

7

Deberías echar un vistazo a la propiedad QWidget::sizePolicy. Controla cómo el diseño respeta el sizeHint() de sus elementos secundarios cuando actualiza las geometrías.

Así que lo que hay que hacer es: Hacer que el diseño de ignorar las sizeHints horizontales de los widgets hijos mediante el establecimiento de la sizePolicy horizontal de las tres widgets hijos a QSizePolicy::Ignored:

QLabel *label = ...; 
... 
label->setSizePolicy(QSizePolicy::Ignored, label->sizePolicy().verticalPolicy()); 

(El segundo argumento se asegurará de que la política vertical no cambia con esta declaración. Por supuesto, debe establecer la política de tamaño de cada widget hijo, este código de ejemplo es solo para la etiqueta.)

Tenga en cuenta que el contenido de su diseño debe ser widgets; Creo que a los diseños anidados no se les puede asignar una política de tamaño (pero podría estar equivocado). Al menos con QtDesigner, no hay forma de aplicar una política de tamaño a un diseño en sí mismo (si no es el diseño de un widget). Ver comentarios para más detalles.


En QtDesigner, se puede establecer el sizePolicy de los widgets hijos como este:

Antes:
enter image description here
shrinked:
enter image description here
Seleccionar los elementos de la disposición:
enter image description here
Establecer la política tamaño horizontal a "hizo caso omiso":
enter image description here
Resultado:
enter image description here

+0

en QtDesigner hice clic en uno de los 3 widgets de verticalLayout que son los tres objetos en el widget horizontalLayout (el que tiene el layoutThtch 1: 3: 2). Sin embargo, no existe sizePolicy, solo layoutLeftMargin, layoutTopMargin, layoutRightMargin, layoutBottomMargin, layoutSpacing, layoutStretch y layoutSizeConstraint. –

+0

@DavidDoria Agregué capturas de pantalla para QtDesigner. – leemes

+0

Lo siento, creo que aún no estaba claro. Tengo widgets verticalLayout que son los elementos secundarios de un widget horizontalLayout. Estos widgets de Layout vertical son de los que quiero fijar la proporción de, pero no tienen una propiedad "sizePolicy". –

Cuestiones relacionadas