2008-10-24 14 views
12

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.¿Cómo se solucionan los problemas de diseño de Qt?

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

Por favor, comparta.

Respuesta

4

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

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

1

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.

1

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 las cosas span columns/rows.

También recomiendo probar todas las 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.

3

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 en .

0

Muchos de prueba y error. Descubrí que insertar estiramientos en puntos estratégicos a menudo me ayuda a producir el efecto que quiero. Por ejemplo, si tengo una QPushButton en un diseño que yo quiero ser el tamaño mínimo que voy a hacer 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 los contenidos 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.

Cuestiones relacionadas