¿Cómo puedo auto-ajuste del tamaño de un QDialog dependiendo de la longitud del texto de uno de sus hijos?
Pregunta
Tengo un QDialog
estoy trabajando con. Se hace un poco como un QMessageBox
. Noté que el tamaño de la QMessageBox
(y el tamaño de su etiqueta) depende del tamaño del mensaje que se muestra.
¿Cómo puedo hacer que el tamaño de mi QDialog
ajustar automáticamente como un QMessageBox
? Ahora, mi QDialog
contiene una caja de botones y una etiqueta, y el QDialog
es la disposición 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.)
Solución
solución automática:
Use diseños y las políticas de tamaño establecidos para QSizePolicy::Expanding
. En QtDesigner, una vez que todos sus hijos se colocan en su QDialog, a continuación, haga clic en el tamaño de Ajuste botón queridos al lado de diseño. Su QDialog se ajustará automáticamente en tiempo de ejecución.
Solución manual:
La clase QWidget
tiene un método adjustSize
que cambiar el tamaño de la QWidget para adaptarse a su contenido. Sólo tiene que llamar cuando se establecen todos los niños.
Otros consejos
Establezca su diálogo de expandir, y muy pequeña. A continuación, asegúrese de ajustar su mensaje antes de mostrar el cuadro de diálogo. Cuando se muestra, se tratará de encontrar su tamaño adecuado, en función del 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.)