Auf dieser Seite

QSizePolicy Class

Die Klasse „QSizePolicy“ ist ein Layout-Attribut, das die Regeln für die horizontale und vertikale Größenanpassung beschreibt. Mehr...

Kopfzeile: #include <QSizePolicy>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets

Öffentliche Typen

enum ControlType { DefaultType, ButtonBox, CheckBox, ComboBox, Frame, …, ToolButton }
flags ControlTypes
enum Policy { Fixed, Minimum, Maximum, Preferred, Expanding, …, Ignored }
enum PolicyFlag { GrowFlag, ExpandFlag, ShrinkFlag, IgnoreFlag }

Öffentliche Funktionen

QSizePolicy()
QSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical, QSizePolicy::ControlType type = DefaultType)
QSizePolicy::ControlType controlType() const
Qt::Orientations expandingDirections() const
bool hasHeightForWidth() const
bool hasWidthForHeight() const
QSizePolicy::Policy horizontalPolicy() const
int horizontalStretch() const
bool retainSizeWhenHidden() const
void setControlType(QSizePolicy::ControlType type)
void setHeightForWidth(bool dependent)
void setHorizontalPolicy(QSizePolicy::Policy policy)
void setHorizontalStretch(int stretchFactor)
void setRetainSizeWhenHidden(bool retainSize)
void setVerticalPolicy(QSizePolicy::Policy policy)
void setVerticalStretch(int stretchFactor)
void setWidthForHeight(bool dependent)
void transpose()
QSizePolicy transposed() const
QSizePolicy::Policy verticalPolicy() const
int verticalStretch() const
operator QVariant() const
bool operator!=(const QSizePolicy &other) const
bool operator==(const QSizePolicy &other) const
size_t qHash(QSizePolicy key, size_t seed = 0)
QDataStream &operator<<(QDataStream &stream, const QSizePolicy &policy)
QDataStream &operator>>(QDataStream &stream, QSizePolicy &policy)

Ausführliche Beschreibung

Die Größenrichtlinie eines Widgets drückt aus, inwieweit es auf verschiedene Weise in der Größe angepasst werden kann, und beeinflusst, wie das Widget von der Layout-Engine behandelt wird. Jedes Widget gibt eine `QSizePolicy` zurück, die die bevorzugte Richtlinie für die horizontale und vertikale Größenanpassung beim Layout beschreibt. Sie können dies für ein bestimmtes Widget ändern, indem Sie dessen Eigenschaft ` QWidget::sizePolicy ` anpassen.

QSizePolicy enthält zwei unabhängige Werte für „ QSizePolicy::Policy “ und zwei Dehnungsfaktoren; einer beschreibt die horizontale Größenrichtlinie des Widgets, der andere die vertikale. Außerdem enthält es ein Flag, das angibt, ob Höhe und Breite der bevorzugten Größe miteinander in Beziehung stehen.

Die horizontale und vertikale Größenstrategie können im Konstruktor festgelegt und mithilfe der Funktionen ` setHorizontalPolicy()` und ` setVerticalPolicy()` geändert werden. Die Dehnungsfaktoren können mit den Funktionen ` setHorizontalStretch()` und ` setVerticalStretch()` festgelegt werden. Das Flag, das angibt, ob die ` sizeHint()` des Widgets breitenabhängig ist (wie beispielsweise bei einer Menüleiste oder einer Beschriftung mit Zeilenumbruch), kann mit der Funktion ` setHeightForWidth()` gesetzt werden.

Die aktuellen Größenrichtlinien und Dehnungsfaktoren können mit den Funktionen ` horizontalPolicy()`, ` verticalPolicy()`, ` horizontalStretch()` und ` verticalStretch()` abgerufen werden. Alternativ können Sie die Funktion ` transpose()` verwenden, um die horizontalen und vertikalen Richtlinien und Dehnungen zu vertauschen. Die Funktion ` hasHeightForWidth()` gibt den aktuellen Status des Flags zurück, das die Abhängigkeiten der Größenhinweise angibt.

Verwenden Sie die Funktion ` expandingDirections()` (Größenrichtlinie), um festzustellen, ob das zugehörige Widget mehr Platz beanspruchen kann, als die Funktion ` sizeHint()` (Größenrichtlinie) angibt, sowie um herauszufinden, in welche Richtungen es sich ausdehnen kann.

Schließlich stellt die Klasse `QSizePolicy` Operatoren bereit, die diese Größenrichtlinie mit einer vorgegebenen Richtlinie vergleichen, sowie einen ` QVariant `-Operator, der diese `QSizePolicy` als ` QVariant `-Objekt speichert.

Siehe auch QSize, QWidget::sizeHint(), QWidget::sizePolicy und QLayoutItem::sizeHint().

Dokumentation zu Mitgliedstypen

enum QSizePolicy::ControlType
flags QSizePolicy::ControlTypes

Diese Aufzählung spezifiziert die verschiedenen Arten von Widgets hinsichtlich ihrer Interaktion mit dem Layout:

KonstanteWertBeschreibung
QSizePolicy::DefaultType0x00000001Der Standardtyp, wenn kein Typ angegeben ist.
QSizePolicy::ButtonBox0x00000002Eine Instanz von ` QDialogButtonBox `.
QSizePolicy::CheckBox0x00000004Eine Instanz von ` QCheckBox `.
QSizePolicy::ComboBox0x00000008Eine Instanz von „ QComboBox “.
QSizePolicy::Frame0x00000010Eine „ QFrame “-Instanz.
QSizePolicy::GroupBox0x00000020Eine „ QGroupBox “-Instanz.
QSizePolicy::Label0x00000040Eine „ QLabel “-Instanz.
QSizePolicy::Line0x00000080Eine „ QFrame “-Instanz mit „ QFrame::HLine “ oder „ QFrame::VLine “.
QSizePolicy::LineEdit0x00000100Eine „ QLineEdit “-Instanz.
QSizePolicy::PushButton0x00000200Eine „ QPushButton “-Instanz.
QSizePolicy::RadioButton0x00000400Eine „ QRadioButton “-Instanz.
QSizePolicy::Slider0x00000800Eine „ QAbstractSlider “-Instanz.
QSizePolicy::SpinBox0x00001000Eine „ QAbstractSpinBox “-Instanz.
QSizePolicy::TabWidget0x00002000Eine „ QTabWidget “-Instanz.
QSizePolicy::ToolButton0x00004000Eine Instanz von „ QToolButton “.

Der Typ „ControlTypes“ ist eine Typdefinition für „QFlags<ControlType>“. Er speichert eine OR-Kombination von „ControlType“-Werten.

Siehe auch „ setControlType()“ und „ controlType()“.

enum QSizePolicy::Policy

Diese Aufzählung beschreibt die verschiedenen Arten der Dimensionsgrößenangabe, die beim Erstellen eines „ QSizePolicy “ verwendet werden.

KonstanteWertBeschreibung
QSizePolicy::Fixed0Das Widget „ QWidget::sizeHint()“ ist die einzig zulässige Alternative, sodass das Widget niemals vergrößert oder verkleinert werden kann (z. B. in vertikaler Richtung bei einer Schaltfläche).
QSizePolicy::MinimumGrowFlagDer Wert von `sizeHint()` ist minimal und ausreichend. Das Widget kann vergrößert werden, es bietet jedoch keinen Vorteil, wenn es größer ist (z. B. die horizontale Richtung einer Schaltfläche). Es kann nicht kleiner sein als die durch `sizeHint()` angegebene Größe.
QSizePolicy::MaximumShrinkFlagDer Wert von „sizeHint()“ stellt ein Maximum dar. Das Widget kann ohne Beeinträchtigung beliebig verkleinert werden, wenn andere Widgets den Platz benötigen (z. B. eine Trennlinie). Es darf nicht größer sein als die durch „sizeHint()“ angegebene Größe.
QSizePolicy::PreferredGrowFlag | ShrinkFlagDer Wert von `sizeHint()` ist optimal, aber das Widget kann verkleinert werden und bleibt dennoch nützlich. Das Widget kann vergrößert werden, es bietet jedoch keinen Vorteil, größer als `sizeHint()` zu sein (die Standardrichtlinie „ QWidget “).
QSizePolicy::ExpandingGrowFlag | ShrinkFlag | ExpandFlagDer Wert von `sizeHint()` ist eine sinnvolle Größe, aber das Widget kann verkleinert werden und bleibt dennoch nützlich. Das Widget kann zusätzlichen Platz nutzen, daher sollte es so viel Platz wie möglich erhalten (z. B. in horizontaler Richtung bei einem horizontalen Schieberegler).
QSizePolicy::MinimumExpandingGrowFlag | ExpandFlagDer Wert von `sizeHint()` ist minimal und ausreichend. Das Widget kann zusätzlichen Platz nutzen und sollte daher so viel Platz wie möglich erhalten (z. B. in horizontaler Richtung bei einem horizontalen Schieberegler).
QSizePolicy::IgnoredShrinkFlag | GrowFlag | IgnoreFlagDie `sizeHint()`-Angabe wird ignoriert. Das Widget erhält so viel Platz wie möglich.

Siehe auch PolicyFlag, setHorizontalPolicy() und setVerticalPolicy().

enum QSizePolicy::PolicyFlag

Diese Flags werden kombiniert, um die verschiedenen „ Policy “-Werte zu bilden:

KonstanteWertBeschreibung
QSizePolicy::GrowFlag1Das Widget kann bei Bedarf über seine Größenangabe hinaus wachsen.
QSizePolicy::ExpandFlag2Das Widget sollte so viel Platz wie möglich erhalten.
QSizePolicy::ShrinkFlag4Das Widget kann bei Bedarf unter seine Größenangabe schrumpfen.
QSizePolicy::IgnoreFlag8Der Größenhinweis des Widgets wird ignoriert. Das Widget erhält so viel Platz wie möglich.

Siehe auch Policy.

Dokumentation zu Mitgliedsfunktionen

[constexpr noexcept] QSizePolicy::QSizePolicy()

Erstellt ein QSizePolicy-Objekt, dessen horizontale und vertikale Richtlinien „ Fixed “ lauten.

Die Richtlinien können mit den Funktionen „ setHorizontalPolicy()“ und „ setVerticalPolicy()“ geändert werden. Verwenden Sie die Funktion „ setHeightForWidth()“, wenn die bevorzugte Höhe des Widgets von dessen Breite abhängt (z. B. bei einem „ QLabel “ mit Zeilenumbruch).

Siehe auch setHorizontalStretch() und setVerticalStretch().

[constexpr noexcept] QSizePolicy::QSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical, QSizePolicy::ControlType type = DefaultType)

Erstellt ein QSizePolicy-Objekt mit den angegebenen Richtlinien „ horizontal “ und „ vertical “ sowie dem angegebenen Steuerelement „ type “.

Verwenden Sie ` setHeightForWidth()`, wenn die bevorzugte Höhe des Widgets von dessen Breite abhängt (z. B. bei einem ` QLabel ` mit Zeilenumbruch).

Siehe auch ` setHorizontalStretch()`, ` setVerticalStretch()` und ` controlType()`.

[noexcept] QSizePolicy::ControlType QSizePolicy::controlType() const

Gibt den Steuerelementtyp zurück, der dem Widget zugeordnet ist, für das diese Größenrichtlinie gilt.

Siehe auch „ setControlType()“.

[constexpr noexcept] Qt::Orientations QSizePolicy::expandingDirections() const

Gibt zurück, ob ein Widget mehr Platz beanspruchen kann, als die Funktion ` QWidget::sizeHint()` angibt.

Der Wert „ Qt::Horizontal “ oder „ Qt::Vertical “ bedeutet, dass das Widget horizontal oder vertikal wachsen kann (d. h., die horizontale bzw. vertikale Richtlinie lautet „ Expanding “ oder „ MinimumExpanding “), während „ Qt::Horizontal “ | „ Qt::Vertical “ bedeutet, dass es in beiden Dimensionen wachsen kann.

Siehe auch horizontalPolicy() und verticalPolicy().

[constexpr noexcept] bool QSizePolicy::hasHeightForWidth() const

Gibt „ true “ zurück, wenn die bevorzugte Höhe des Widgets von seiner Breite abhängt; andernfalls wird „ false “ zurückgegeben.

Siehe auch setHeightForWidth().

[constexpr noexcept] bool QSizePolicy::hasWidthForHeight() const

Gibt „ true “ zurück, wenn die Breite des Widgets von seiner Höhe abhängt; andernfalls wird „ false “ zurückgegeben.

Siehe auch setWidthForHeight().

[constexpr noexcept] QSizePolicy::Policy QSizePolicy::horizontalPolicy() const

Gibt die horizontale Komponente der Größenrichtlinie zurück.

Siehe auch setHorizontalPolicy(), verticalPolicy() und horizontalStretch().

[constexpr noexcept] int QSizePolicy::horizontalStretch() const

Gibt den horizontalen Streckungsfaktor der Größenrichtlinie zurück.

Siehe auch setHorizontalStretch(), verticalStretch() und horizontalPolicy().

[constexpr noexcept] bool QSizePolicy::retainSizeWhenHidden() const

Gibt zurück, ob das Layout die Größe des Widgets beibehalten soll, wenn es ausgeblendet wird. Standardmäßig ist dies „ false “.

Siehe auch setRetainSizeWhenHidden().

[noexcept] void QSizePolicy::setControlType(QSizePolicy::ControlType type)

Legt den Steuerelementtyp fest, der dem Widget zugeordnet ist, für das diese Größenrichtlinie gilt ( type).

Der Steuerelementtyp gibt den Typ des Widgets an, für das diese Größenrichtlinie gilt. Er wird von einigen Stilen, insbesondere von QMacStyle, verwendet, um den richtigen Abstand zwischen Widgets einzufügen. Beispielsweise legen die macOS-Aqua-Richtlinien fest, dass Drucktasten durch 12 Pixel voneinander getrennt sein sollten, während vertikal angeordnete Optionsfelder nur 6 Pixel Abstand benötigen.

Siehe auch controlType() und QStyle::layoutSpacing().

[constexpr noexcept] void QSizePolicy::setHeightForWidth(bool dependent)

Setzt das Flag, das bestimmt, ob die bevorzugte Höhe des Widgets von seiner Breite abhängt, auf „ dependent “.

Siehe auch „ hasHeightForWidth()“ und „ setWidthForHeight()“.

[constexpr noexcept] void QSizePolicy::setHorizontalPolicy(QSizePolicy::Policy policy)

Setzt die horizontale Komponente auf den angegebenen Wert policy.

Siehe auch horizontalPolicy(), setVerticalPolicy() und setHorizontalStretch().

[constexpr] void QSizePolicy::setHorizontalStretch(int stretchFactor)

Legt den horizontalen Streckungsfaktor der Größenrichtlinie auf den angegebenen Wert „ stretchFactor “ fest. „ stretchFactor “ muss im Bereich [0,255] liegen.

Wenn zwei Widgets in einem horizontalen Layout nebeneinander liegen, stellt die Einstellung des horizontalen Streckfaktors des linken Widgets auf 2 und des rechten Widgets auf 1 sicher, dass das linke Widget immer doppelt so groß ist wie das rechte.

Siehe auch horizontalStretch(), setVerticalStretch() und setHorizontalPolicy().

[constexpr noexcept] void QSizePolicy::setRetainSizeWhenHidden(bool retainSize)

Legt fest, ob ein Layout die Größe des Widgets beibehalten soll, wenn dieses ausgeblendet wird. Wenn „ retainSize “ auf „ true “ gesetzt ist, wird das Layout durch das Ausblenden des Widgets nicht verändert.

Siehe auch ` retainSizeWhenHidden()`.

[constexpr noexcept] void QSizePolicy::setVerticalPolicy(QSizePolicy::Policy policy)

Setzt die vertikale Komponente auf den angegebenen Wert „ policy “.

Siehe auch verticalPolicy(), setHorizontalPolicy() und setVerticalStretch().

[constexpr] void QSizePolicy::setVerticalStretch(int stretchFactor)

Legt den vertikalen Stretch-Faktor der Größenrichtlinie auf den angegebenen Wert „ stretchFactor “ fest. „ stretchFactor “ muss im Bereich [0,255] liegen.

Wenn zwei Widgets in einem vertikalen Layout nebeneinander liegen, stellt die Einstellung des vertikalen Streckfaktors des oberen Widgets auf 2 und des unteren Widgets auf 1 sicher, dass das obere Widget immer doppelt so groß ist wie das untere.

Siehe auch verticalStretch(), setHorizontalStretch() und setVerticalPolicy().

[constexpr noexcept] void QSizePolicy::setWidthForHeight(bool dependent)

Setzt das Flag, das festlegt, ob die Breite des Widgets von seiner Höhe abhängt, auf „ dependent “.

Dies wird nur für Unterklassen von ` QGraphicsLayout` unterstützt. Es ist nicht möglich, ein Layout zu haben, das gleichzeitig sowohl „Höhe-für-Breite“- als auch „Breite-für-Höhe“-Einschränkungen enthält.

Siehe auch „ hasWidthForHeight()“ und „ setHeightForWidth()“.

[constexpr noexcept] void QSizePolicy::transpose()

Tauscht die horizontalen und vertikalen Richtlinien aus und dehnt sie.

Siehe auch transposed().

[constexpr noexcept] QSizePolicy QSizePolicy::transposed() const

Gibt ein Größenrichtlinienobjekt zurück, bei dem die horizontale und vertikale Richtlinie vertauscht sind.

Siehe auch „ transpose()“.

[constexpr noexcept] QSizePolicy::Policy QSizePolicy::verticalPolicy() const

Gibt die vertikale Komponente der Größenrichtlinie zurück.

Siehe auch setVerticalPolicy(), horizontalPolicy() und verticalStretch().

[constexpr noexcept] int QSizePolicy::verticalStretch() const

Gibt den vertikalen Skalierungsfaktor der Größenrichtlinie zurück.

Siehe auch setVerticalStretch(), horizontalStretch() und verticalPolicy().

QSizePolicy::operator QVariant() const

Gibt ein ` QVariant ` zurück, in dem diese ` QSizePolicy` gespeichert ist.

[constexpr noexcept] bool QSizePolicy::operator!=(const QSizePolicy &other) const

Gibt „ true “ zurück, wenn sich diese Richtlinie von „ other “ unterscheidet; andernfalls wird „ false “ zurückgegeben.

Siehe auch operator==().

[constexpr noexcept] bool QSizePolicy::operator==(const QSizePolicy &other) const

Gibt „ true “ zurück, wenn diese Richtlinie mit „ other “ übereinstimmt; andernfalls wird „ false “ zurückgegeben.

Siehe auch operator!=().

Verwandte Nicht-Mitglieder

[noexcept] size_t qHash(QSizePolicy key, size_t seed = 0)

Gibt den Hash-Wert für key zurück, wobei seed als Startwert für die Berechnung verwendet wird.

QDataStream &operator<<(QDataStream &stream, const QSizePolicy &policy)

Schreibt die Größen policy in den Datenstrom stream.

Siehe auch „Format der QDataStream-Operatoren“.

QDataStream &operator>>(QDataStream &stream, QSizePolicy &policy)

Liest die Größenangabe „ policy “ aus dem Datenstrom „ stream “.

Siehe auch Format der QDataStream-Operatoren.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.