Wie kann ich die automatische Einstellung der Größe eines QDialog auf die Textlänge eines ihrer Kinder abhängig?

StackOverflow https://stackoverflow.com/questions/1675499

  •  16-09-2019
  •  | 
  •  

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

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top