Pregunta

Esta es la jerarquía de widgets que tengo:

Marco > wxBoxSizer > wxPanel > wxBoxSizer > wxFlexGridSizer (2 columnas, 9 filas), con varios campos de formulario y botones dentro.

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

Todo se ve bien, y el marco puede expandirse correctamente si la ventana se agranda, pero también se puede cambiar su tamaño a casi nada, ocultando todos los elementos del formulario.

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

¿Fue útil?

Solución

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 (solo lo probé). Una vez establecido, wxWidgets no permitirá que el marco tenga un tamaño menor que el valor especificado.

Establecería el valor de esta manera. En el constructor, configure todos los elementos del marco. Al final, después de llamar al método Layout () para configurar todos los dimensionadores 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 Frame. Esto tendrá en cuenta todos los diversos rellenos y bordes, y los configurados por el marco y los elementos contenidos.

Otros consejos

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

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

Intentaría llamar a wxFrame- > SetMinSize (wxSize) con lo que sea wxFlexGridSizer- > GetMinSize () devuelve, debería funcionar, pero no probado . Tendrá que tener en cuenta lo que dice GetMinSize sobre la conversión al tamaño de la ventana antes de pasarlo, espero.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top