2009-11-04 36 views
5

Tengo un QDialog con el que estoy trabajando. Se hace un poco como un QMessageBox. Me di cuenta de que el tamaño del QMessageBox (y el tamaño de su etiqueta) depende del tamaño del mensaje que se muestra.¿Cómo puedo autoajustar el tamaño de un QDialog dependiendo de la longitud del texto de uno de sus elementos secundarios?

¿Cómo haré que el tamaño de mi QDialog se ajuste automáticamente como QMessageBox? Actualmente mi QDialog contiene un cuadro de botones y una etiqueta, y el QDialog es de diseño Vertical.

(sé que sólo podía utilizar el cuadro de mensaje directamente pero con el tiempo voy a tener diálogos más complejos.)

Respuesta

13

solución automática:

Utilice diseños y establezca políticas de tamaño en QSizePolicy::Expanding. En QtDesigner, una vez que todos sus hijos se colocan en su QDialog, haga clic en Ajustar tamaño los siguientes diseños. Su QDialog se redimensionará automáticamente en tiempo de ejecución.

solución manual:

La clase tiene un método QWidgetadjustSize que cambiar el tamaño de la QWidget para adaptarse a su contenido. Solo llámalo cuando estén todos los niños.

+1

la solución manual no funciona en mi caso: tengo un QDialog con QVBoxLayout con QTableWidget y QHBoxLayout con 2 botones, establecí las políticas en Expandir y llamar a adjustSize en el cuadro de diálogo no hace exactamente nada (visible) – Lars

+0

Es importante llamar a QApplication :: processEvents() antes de llamar a adjustSize(), como se documenta aquí: http://daniel-albuschat.blogspot.de/2009/08/shrinking-qt-widgets-to-minimum-needed.html – Cerno

1

Indica tu diálogo que se va expandiendo, y muy pequeña. Luego, asegúrese de configurar su mensaje antes de mostrar el cuadro de diálogo. Cuando se muestre, intentará encontrar su tamaño adecuado, según el tamaño de los objetos que contiene. (Esto sucede de forma recursiva, por lo que si el diálogo no es el padre directo de la etiqueta en la que se muestra su mensaje, asegúrese de que todo lo que entre la etiqueta y el cuadro de diálogo está configurado para utilizar diseños.)

Cuestiones relacionadas