Fixing Gibt es eine Möglichkeit, die layoutStretch Eigenschaft immer befolgt werden zu machen? Z.B. Ich habe es auf "1,3,2", aber dann ein Widget (ein Label) im ersten Teil (die "1" in "1,3,2") erweitert (wenn mehr Text hinzugefügt wird), und dann die 1: 3: 2-Ration wird nicht mehr respektiert. Das heißt, das Verhältnis "1: 3: 2" wird zu etwas wie "3: 1: 3".die Größe des Layouts
Antwort
Sie sollten auf dem Grundstück QWidget::sizePolicy
einen Blick darauf werfen. Es steuert, wie das Layout die sizeHint()
seiner untergeordneten Elemente bei der Aktualisierung der Geometrien berücksichtigt.
Also, was Sie tun müssen, ist: Machen Sie das Layout der horizontalen sizeHints der Kind-Widgets ignorieren, indem die horizontale sizePolicy der drei Kind-Widgets zu QSizePolicy::Ignored
Einstellung:
QLabel *label = ...;
...
label->setSizePolicy(QSizePolicy::Ignored, label->sizePolicy().verticalPolicy());
(Das zweite Argument, die sicherstellen, Die vertikale Richtlinie wird durch diese Anweisung nicht geändert. Natürlich sollten Sie die Größenrichtlinie jedes untergeordneten Widgets festlegen, dieser Beispielcode ist nur für das Etikett.)
Beachten Sie, dass der Inhalt Ihres Layouts sein muss Widgets; Ich denke, verschachtelten Layouts kann keine Größenrichtlinie zugewiesen werden (aber ich könnte falsch liegen). Zumindest unter Verwendung von QtDesigner gibt es keine Möglichkeit, eine Größenrichtlinie auf ein Layout selbst anzuwenden (wenn es nicht das Layout eines Widgets ist). Siehe Kommentare für Details.
In QtDesigner, können Sie die sizePolicy der Kind-Widgets wie folgt festgelegt:
Bevor:
Shrinked:
die Elemente auswählen, die im Layout:
die horizontale Größe Politik auf "Ignoriert":
Ergebnis:
- 1. Die Größe eines Layouts ändern
- 2. Wie man automatisch die Größe des HTML-Layouts einstellt?
- 3. Langsame Laden des Layouts
- 4. Die Größe eines inneren Layouts in Pixeln ermitteln
- 5. So ändern Sie die Größe einer Ansicht mithilfe des automatischen Layouts von Xcode
- 6. Größe des Zeichenfeldes und die Größe des Zeichenzeigers
- 7. Ändern der Größe Layouts dynamisch mit ViewFlipper
- 8. Ändern des Layouts von STPPaymentCardTextField
- 9. Position des Layouts dynamisch setzen
- 10. AppCompat ActionBar Wiederherstellen des ursprünglichen Layouts
- 11. Fehler beim Aufblasen des Layouts
- 12. die Größe des Selenrahmens reduzieren
- 13. Dynamische Anpassung des Widget-Inhalts und -Layouts an die Größe, die der Benutzer durch die Größenänderung definiert hat. Android
- 14. die Breite des linearen Layouts ändert in android
- 15. Wie strecke ich das Bild auf die Breite des Layouts?
- 16. Ändern des Layouts beim Klicken auf die Schaltfläche
- 17. So verwenden Sie die Methode setEffect des Layouts richtig
- 18. Swift - Anpassen von fontSize an die Breite des Layouts (programmgesteuert)
- 19. Das Gewicht beschränkt nicht die Breite des Layouts
- 20. So ändern Sie die Sichtbarkeit des Layouts programmgesteuert
- 21. Wie ändert man die relative Rahmenfarbe des Layouts?
- 22. UIWebView Frame Größe ändert nicht die Größe des inneren Inhalts
- 23. Dynamischer Zugriff auf Elemente des Layouts
- 24. Grundlagen des kraftgesteuerten Layouts von D3
- 25. Aufschalten supportsRtl in eines des Layouts
- 26. Android - Höhe des übergeordneten Layouts abrufen
- 27. Schienen 4 - Name des aktuellen Layouts?
- 28. ändern Hintergrundfarbe des Layouts in Android
- 29. Breite des linearen/relativen Layouts erhalten?
- 30. ggplot2: Ändern des Layouts der Legende
in QtDesigner ich auf einem der drei Vertical widgets angeklickt, dass die drei Objekte in der Horizontallayout-Widget sind (dasjenige, das den 1: 3: 2 LayoutStretch hat). Allerdings gibt es keine sizePolicy, nur layoutLeftMargin, layoutTopMargin, layoutRightMargin, layoutBottomMargin, layoutSpacing, layoutStretch und layoutSizeConstraint. –
@DavidDoria Ich habe Screenshots für QtDesigner hinzugefügt. – leemes
Sorry, ich denke, ich war immer noch nicht klar. Ich habe verticalLayout-Widgets, die die Kinder eines horizontalLayout-Widgets sind. Diese verticalLayout-Widgets sind diejenigen, für die ich das Verhältnis von fixieren möchte, aber sie haben keine "sizePolicy" -Eigenschaft. –