vertical example qt layout

example - ¿Cómo se solucionan los problemas de diseño de Qt?



qt vertical layout (5)

Tengo un diálogo complejo, y está lleno de espacios en blanco y no puedo reducirlo. En Designer, tiene muchos componentes que luego se ocultan dinámicamente, y algunos que se agregan dinámicamente. Agregué dumping de políticas de tamaño, sugerencias de tamaño y tamaños mínimos, pero todavía no puedo entender por qué Qt no me deja arrastrarlo más pequeño.

Debe haber algunas herramientas o técnicas para solucionar este problema.

Por favor comparte.


Parece que podríamos usar el equivalente del elemento de Firebug y los modos de inspector de métricas de CSS. La parte más difícil de dicha herramienta sería averiguar y comunicar por qué una política de diseño individual usaba o no un valor de tamaño determinado en un widget.


Es difícil de decir sin ver su diseño, pero veo un montón de problemas de cambio de tamaño como usted describe debido al uso de QGridLayout. Lo más grande en una columna o fila, va a determinar el ancho mínimo de esa columna. Lo mismo para una fila.

Si está utilizando QGridLayout, puede intentar hacer que las cosas abarquen columnas / filas .

También recomendaría probar todas sus diversas configuraciones de diseño en Designer y probarlas cambiando el tamaño. Realmente no usamos el Diseñador donde trabajo, pero lo uso todo el tiempo para probar y depurar ideas de diseño.


Muchas pruebas y errores. Descubrí que insertar estiramientos en puntos estratégicos a menudo me ayuda a producir el efecto que quiero. Por ejemplo, si tengo un QPushButton en un diseño que quiero que sea el tamaño mínimo, haré algo como lo siguiente:

QHBoxLayout* layout = new QHBoxLayout; QPushButton* myBtn = new QPushButton("Test"); layout->insertStretch(1); layout->addWidget(myBtn, 0); layout->insertStretch(1);

Además, no olvide que puede establecer el margen de contenido de un diseño con setContentsMargins ().

No uso Designer porque he descubierto que entiendo el sistema de diseño mucho mejor cuando juego con él en el código.


Puede capturar la señal QApplication :: focusChanged (QWidget *, QWidget *) y cambiar el fondo del widget actualmente enfocado. Creo que esto ayudaría a determinar cuánto espacio ocupa cada widget.


No conozco ninguna herramienta para hacer esto, pero lo he logrado antes cambiando la paleta de los diferentes elementos en el diálogo, luego mirando lo que ocupa más (o menos) espacio de lo que esperaba, y enfocando mi investigación sobre esos elementos.

En un sentido más general, asegúrese de haber configurado el diálogo para que no sea de un tamaño fijo. Eso también me mordió una vez.