2009-03-04 23 views
8

Esta es la jerarquía de widgets Tengo:¿Cómo configuro un tamaño de ventana mínimo en wxWidgets?

Marco> wxBoxSizer> wxPanel> wxBoxSizer> wxFlexGridSizer (2 columnas, 9 filas), con una variedad de campos de formulario y botones en el interior.

El primer BoxSizer es colocar el panel y el segundo es hacer un borde alrededor de FlexGrid.

Todo se ve bien, y el marco puede expandirse correctamente si la ventana se amplía, pero también se puede cambiar el tamaño a casi nada, ocultando todos los elementos de la forma.

¿Cómo fuerzo el tamaño mínimo para la ventana al predeterminado por FlexGridSizer (todos los elementos de formulario son visibles y tienen sus tamaños mínimos posibles)?

Respuesta

6

El uso del método SetMinSize() en su Marco para establecer un tamaño mínimo establecerá un límite en el área más pequeña del marco (recién probado). Una vez configurado, wxWidgets no permitirá que el marco tenga un tamaño inferior al especificado.

Establecí el valor así. En el constructor, configure todos los elementos del marco. Al final, después de llamar al método Layout() para configurar todos los clasificadores y demás, llame al método GetSize(int *w, int *h) para obtener el tamaño xey de su marco en el diseño predeterminado. Use esos valores para llamar al método SetMinSize() para establecer ese tamaño predeterminado como el mínimo para su Marco. Esto tendrá en cuenta todos los diversos rellenos y bordes y tal configuración por el marco y los elementos contenidos.

2

En wxPerl, respuesta dagorym 's se puede escribir de forma concisa como $self->SetMinSize($self->GetSize()); después de una llamada a Layout().

12

Probablemente sea demasiado tarde pero las respuestas aquí son innecesariamente complicadas, solo necesita llamar al SetSizerAndFit(sizer) para asociar el medidor con el marco, establecer su tamaño inicial y establecer este tamaño como tamaño aceptable mínimo.

+1

¡No es demasiado tarde para que su respuesta se eleve! – dolmen

Cuestiones relacionadas