wake-up-neo.com

Grundlegendes zu Formularlayoutmechanismen in Qt

Qt verfügt über einen flexiblen und leistungsstarken Layoutmechanismus für die Ansicht der Fenster der Desktopanwendung.

Aber es ist so flexibel, dass es fast nicht verstanden werden kann, wenn etwas schief geht und eine Feinabstimmung benötigt. Und so mächtig, dass es jeden schlagen kann, der versucht, Qts Meinung darüber, wie Form aussehen sollte, zu überwältigen.

Kann jemand Artikel oder Quellen zu den Positionierungsmechanismen von Qt erläutern oder bereitstellen?

Ich versuche, die QLabel, QPushButton und QTableView, die durch nachfolgende Unterstriche in ihren Namen gekennzeichnet sind, zu zwingen, zweimal höher zu sein als QTextBrowser mit verticalStretch = 1 unten. Wie kann ich die Höhe des Widgets richtig handhaben?

. UI-Datei meines Formulars in Google Docs. Suche '____' in Namen, Vorschau in QtDesigner

58
Maxim Popravko

Layouts sind eigentlich leicht zu verstehen "ich denke" :)
Eine einfache Erklärung der Layouts finden Sie im qt-Buch "C++ - GUI-Programmierung mit QT 2nd Edition"

Was Sie in Bezug auf Layouts und deren Größenrichtlinien beachten sollten

  • Die meisten Qt-Widgets haben eine Größenrichtlinie. Diese Größenrichtlinie teilt dem System mit, wie das Widget gedehnt oder verkleinert werden soll. Es stammt aus der Klasse QSizePolicy. Eine Größenrichtlinie enthält sowohl vertikale als auch horizontale Komponenten.
  • Die meisten Widgets haben auch einen Größenhinweis. Dieser Größenhinweis teilt dem System eine bevorzugte Größe für Widgets mit
  • QSizePolicy verfügt über einen Dehnungsfaktor, mit dem Widgets unterschiedlich schnell wachsen können

Ich kenne mich nur mit 4 Größenrichtlinien aus

  • richtlinie für feste Größe - Die Größe des Widgets ist fest und kann nicht gedehnt werden. Es bleibt bei seiner Größenangabe.
  • richtlinie für Mindestgröße - Der Größenhinweis ist die kleinstmögliche Größe des Widgets, kann jedoch bei Bedarf noch größer werden.
  • Bevorzugte Größenrichtlinie - Das Widget kann kleiner oder größer werden als der Größenhinweis.
  • richtlinien zum Erweitern der Größe - das Widget kann kleiner oder größer werden als der Größenhinweis :)

Sie möchten vielleicht fragen,

Was ist der Unterschied zwischen bevorzugt und erweitert?
answer: Stellen Sie sich ein Formular mit zwei Widgets vor, eines mit bevorzugten und eines mit expandierenden. Dann wird dem Widget mit der expandierenden Richtlinie zusätzlicher Platz eingeräumt. Das Widget mit der bevorzugten Richtlinie behält seinen Größenhinweis bei.

Ich empfehle (ACHTUNG: bin kein Experte :)) kaufe und lies "C++ GUI-Programmierung mit QT 2nd Edition = ". Ich lese es gerade und es macht sehr viel Sinn. Schauen Sie sich die Bilder an und prüfen Sie, ob sie einen Sinn ergeben.

Erklärung der Größenrichtlinien
Size policy explained

Ein einfaches Beispiel
Dies ist ein einfaches Dialogfeld mit 2 Schaltflächen, deren horizontale und vertikale Größenrichtlinien sowie die horizontale und vertikale Ausdehnung angezeigt werden.

example

Hier ist die Vorschau in ihrer kleinsten Größe.  alt text

Hier ist eine weitere Vorschau in einer größeren Größe  alt text

[EDITED: // Größenhinweis hinzugefügt]

WARUM SOLLTEN SIE SICH UM GRÖSSENTABELLE SORGEN?
Sie können sehen, dass jedes Widget ein sizeHint hat, was von entscheidender Bedeutung ist, da das Layoutsystem von QT immer das sizeHint berücksichtigt. Dies ist nur dann ein Problem, wenn die Standardgröße des Widgets nicht genau Ihren Wünschen entspricht. Der einzige Weg, um dieses Problem zu umgehen, besteht darin, das Widget zu erweitern (in Unterklassen zu unterteilen) und seine Mitgliedsfunktion sizeHint () erneut zu implementieren. Ein Beispiel sagt mehr als 1000 Worte. In meinem Blog gibt es ein Beispielprojekt, um Platz zu sparen.

116
Dr Deo