Wie kann ich die automatische Einstellung der Größe eines QDialog auf die Textlänge eines ihrer Kinder abhängig?
Frage
Ich habe eine QDialog
Ich arbeite mit. Es ist ein wenig wie ein QMessageBox
gemacht. Ich bemerkte, dass die Größe des QMessageBox
(und die Größe seines Label) ist abhängig von der Größe der angezeigten Nachricht.
Wie würde ich die Größe meiner QDialog
machen passen sich automatisch wie ein QMessageBox
? Derzeit mein QDialog
enthält eine Schaltfläche Feld und ein Etikett, und die QDialog
ist das Layout Vertikale.
(Ich weiß, dass ich nur das Meldungsfeld direkt verwenden können, aber schließlich werde ich komplexere Dialoge.)
Lösung
Automatische Lösung:
Verwenden von Layouts und Satzgröße Richtlinien QSizePolicy::Expanding
. In QtDesigner, wenn alle Ihre Kinder auf Ihrem QDialog platziert, dann klicken Sie auf die Schaltfläche Größe anpassen neben Layout diejenigen. Ihre QDialog wird automatisch zur Laufzeit geändert werden.
Manuelle Lösung:
Die QWidget
Klasse hat eine Methode adjustSize
dass die Größe des QWidget seinen Inhalt zu passen. nennen Sie es einfach, wenn alle Kinder festgelegt werden.
Andere Tipps
Stellen Sie Ihren Dialog erweitert werden, und sehr klein. Dann sollten Sie Ihre Nachricht ein, bevor Sie den Dialog zeigt. Wenn gezeigt wird, wird er versuchen, seine richtige Größe zu finden, die auf der Grundlage der Größe der Objekte, die es enthält. (Dies geschieht rekursiv, so dass, wenn der Dialog nicht die direkt Eltern des Labels ist, in dem Sie Ihre Nachricht anzeigen, stellen Sie sicher, dass alles zwischen dem Etikett und dem Dialog gesetzt Layouts zu verwenden.)