QSizePolicy Class
Die Klasse QSizePolicy ist ein Layout-Attribut, das die horizontale und vertikale Größenänderungspolitik 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 |
QVariant | operator QVariant() const |
bool | operator!=(const QSizePolicy &other) const |
bool | operator==(const QSizePolicy &other) const |
Verwandte Nicht-Mitglieder
size_t | qHash(QSizePolicy key, size_t seed = 0) |
QDataStream & | operator<<(QDataStream &stream, const QSizePolicy &policy) |
QDataStream & | operator>>(QDataStream &stream, QSizePolicy &policy) |
Detaillierte Beschreibung
Die Größenpolitik eines Widgets ist ein Ausdruck seiner Bereitschaft, die Größe auf verschiedene Arten zu ändern, und beeinflusst, wie das Widget von der Layout-Engine behandelt wird. Jedes Widget gibt eine QSizePolicy zurück, die die horizontale und vertikale Größenänderungspolitik beschreibt, die es beim Layouten bevorzugt. Sie können dies für ein bestimmtes Widget ändern, indem Sie seine QWidget::sizePolicy Eigenschaft ändern.
QSizePolicy enthält zwei unabhängige QSizePolicy::Policy Werte und zwei Streckungsfaktoren; einer beschreibt die horizontale Größenpolitik des Widgets, der andere seine vertikale Größenpolitik. Sie enthält auch ein Flag, das anzeigt, ob die Höhe und Breite der bevorzugten Größe zusammenhängen.
Die horizontalen und vertikalen Richtlinien können im Konstruktor festgelegt und mit den Funktionen setHorizontalPolicy() und setVerticalPolicy() geändert werden. Die Dehnungsfaktoren können mit den Funktionen setHorizontalStretch() und setVerticalStretch() eingestellt werden. Das Flag, das angibt, ob das Widget sizeHint() breitenabhängig ist (z. B. eine Menüleiste oder ein wortumschließendes Etikett), kann mit der Funktion setHeightForWidth() gesetzt werden.
Die aktuellen Größenrichtlinien und Dehnungsfaktoren können mit den Funktionen horizontalPolicy(), verticalPolicy(), horizontalStretch() und verticalStretch() abgefragt werden. Alternativ können Sie die Funktion transpose() verwenden, um die horizontalen und vertikalen Richtlinien und Dehnungsfaktoren zu vertauschen. Die Funktion hasHeightForWidth() gibt den aktuellen Status des Flags zurück, das die Größenhinweisabhängigkeiten anzeigt.
Verwenden Sie die Funktion expandingDirections(), um festzustellen, ob das zugehörige Widget mehr Platz beanspruchen kann, als die Funktion sizeHint() angibt, und um herauszufinden, in welche Richtungen es sich ausdehnen kann.
Schließlich bietet die Klasse QSizePolicy Operatoren, 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 der Mitgliedstypen
enum QSizePolicy::ControlType
flags QSizePolicy::ControlTypes
Diese Aufzählung spezifiziert die verschiedenen Typen von Widgets in Bezug auf die Layout-Interaktion:
Konstante | Wert | Beschreibung |
---|---|---|
QSizePolicy::DefaultType | 0x00000001 | Der Standardtyp, wenn keiner angegeben ist. |
QSizePolicy::ButtonBox | 0x00000002 | Eine QDialogButtonBox -Instanz. |
QSizePolicy::CheckBox | 0x00000004 | Eine QCheckBox Instanz. |
QSizePolicy::ComboBox | 0x00000008 | Eine QComboBox Instanz. |
QSizePolicy::Frame | 0x00000010 | Eine QFrame Instanz. |
QSizePolicy::GroupBox | 0x00000020 | Eine QGroupBox Instanz. |
QSizePolicy::Label | 0x00000040 | Eine QLabel Instanz. |
QSizePolicy::Line | 0x00000080 | Eine QFrame Instanz mit QFrame::HLine oder QFrame::VLine. |
QSizePolicy::LineEdit | 0x00000100 | Eine QLineEdit Instanz. |
QSizePolicy::PushButton | 0x00000200 | Eine QPushButton Instanz. |
QSizePolicy::RadioButton | 0x00000400 | Eine QRadioButton Instanz. |
QSizePolicy::Slider | 0x00000800 | Eine QAbstractSlider Instanz. |
QSizePolicy::SpinBox | 0x00001000 | Eine QAbstractSpinBox Instanz. |
QSizePolicy::TabWidget | 0x00002000 | Eine QTabWidget Instanz. |
QSizePolicy::ToolButton | 0x00004000 | Eine QToolButton Instanz. |
Der Typ ControlTypes ist ein Typedef 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 Größenklassen, die bei der Konstruktion einer QSizePolicy verwendet werden.
Konstante | Wert | Beschreibung |
---|---|---|
QSizePolicy::Fixed | 0 | QWidget::sizeHint() ist die einzige akzeptable Alternative, so dass das Widget niemals wachsen oder schrumpfen kann (z.B. die vertikale Richtung einer Drucktaste). |
QSizePolicy::Minimum | GrowFlag | Der sizeHint() ist minimal, und ausreichend. Das Widget kann vergrößert werden, aber es bringt keinen Vorteil, wenn es größer ist (z. B. die horizontale Richtung einer Drucktaste). Es kann nicht kleiner sein als die durch sizeHint() angegebene Größe. |
QSizePolicy::Maximum | ShrinkFlag | Der sizeHint() ist ein Maximum. Das Widget kann beliebig verkleinert werden, wenn andere Widgets den Platz benötigen (z. B. eine Trennlinie). Es kann nicht größer sein als die durch sizeHint() angegebene Größe. |
QSizePolicy::Preferred | GrowFlag | ShrinkFlag | Der sizeHint() ist am besten, aber das Widget kann verkleinert werden und ist trotzdem nützlich. Das Widget kann vergrößert werden, aber es hat keinen Vorteil, wenn es größer als sizeHint() ist (die Standardvorgabe von QWidget ). |
QSizePolicy::Expanding | GrowFlag | ShrinkFlag | ExpandFlag | sizeHint() ist eine vernünftige Größe, aber das Widget kann verkleinert werden und ist dann immer noch nützlich. Das Widget kann zusätzlichen Platz nutzen, also sollte es so viel Platz wie möglich bekommen (z.B. die horizontale Richtung eines horizontalen Schiebereglers). |
QSizePolicy::MinimumExpanding | GrowFlag | ExpandFlag | Der sizeHint() ist minimal, und ausreichend. Das Widget kann zusätzlichen Platz nutzen, daher sollte es so viel Platz wie möglich erhalten (z.B. die horizontale Richtung eines horizontalen Schiebereglers). |
QSizePolicy::Ignored | ShrinkFlag | GrowFlag | IgnoreFlag | Der sizeHint() wird ignoriert. Das Widget erhält so viel Platz wie möglich. |
Siehe auch PolicyFlag, setHorizontalPolicy(), und setVerticalPolicy().
enum QSizePolicy::PolicyFlag
Diese Flaggen werden kombiniert, um die verschiedenen Werte von Policy zu bilden:
Konstante | Wert | Beschreibung |
---|---|---|
QSizePolicy::GrowFlag | 1 | Das Widget kann bei Bedarf über seinen Größenhinweis hinaus wachsen. |
QSizePolicy::ExpandFlag | 2 | Das Widget sollte so viel Platz wie möglich bekommen. |
QSizePolicy::ShrinkFlag | 4 | Das Widget kann unter seinen Größenhinweis schrumpfen, wenn dies notwendig ist. |
QSizePolicy::IgnoreFlag | 8 | Der Größenhinweis des Widgets wird ignoriert. Das Widget erhält so viel Platz wie möglich. |
Siehe auch Policy.
Dokumentation der Mitgliedsfunktionen
[constexpr noexcept]
QSizePolicy::QSizePolicy()
Konstruiert ein QSizePolicy-Objekt mit Fixed als horizontale und vertikale Richtlinie.
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 der Breite des Widgets abhängt (z. B. ein QLabel mit Zeilenumbruch).
Siehe auch setHorizontalStretch() und setVerticalStretch().
[constexpr noexcept]
QSizePolicy::QSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical, QSizePolicy::ControlType type = DefaultType)
Konstruiert ein QSizePolicy-Objekt mit den angegebenen horizontal und vertical Richtlinien und dem angegebenen Steuerelement type.
Verwenden Sie setHeightForWidth(), wenn die bevorzugte Höhe des Widgets von der Breite des Widgets abhängt (z.B. ein QLabel mit Zeilenumbruch).
Siehe auch setHorizontalStretch(), setVerticalStretch(), und controlType().
[noexcept]
QSizePolicy::ControlType QSizePolicy::controlType() const
Gibt den Kontrolltyp zurück, der mit dem Widget verbunden 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.
Ein Wert von Qt::Horizontal oder Qt::Vertical bedeutet, dass das Widget horizontal oder vertikal wachsen kann (d.h. die horizontale oder vertikale Richtlinie ist 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ößenpolitik 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 Kontrolltyp fest, der mit dem Widget verbunden ist, für das diese Größenrichtlinie auf type gilt.
Der Steuertyp gibt den Typ des Widgets an, für das diese Größenrichtlinie gilt. Er wird von einigen Stilen, insbesondere QMacStyle, verwendet, um die richtigen Abstände zwischen Widgets einzufügen. Die macOS-Aqua-Richtlinien legen zum Beispiel fest, dass Drucktasten 12 Pixel voneinander entfernt sein sollten, während vertikal gestapelte Optionsfelder nur 6 Pixel 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 die angegebene policy.
Siehe auch horizontalPolicy(), setVerticalPolicy(), und setHorizontalStretch().
[constexpr]
void QSizePolicy::setHorizontalStretch(int stretchFactor)
Setzt den horizontalen Streckungsfaktor der Größenrichtlinie auf den angegebenen Wert stretchFactor. stretchFactor muss im Bereich [0,255] liegen.
Wenn zwei Widgets in einem horizontalen Layout nebeneinander liegen, stellt die Einstellung des horizontalen Streckungsfaktors des Widgets auf der linken Seite auf 2 und des Faktors des Widgets auf der rechten Seite auf 1 sicher, dass das Widget auf der linken Seite immer doppelt so groß ist wie das Widget auf der rechten Seite.
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 es ausgeblendet wird. Wenn retainSize true
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 die angegebene policy.
Siehe auch verticalPolicy(), setHorizontalPolicy(), und setVerticalStretch().
[constexpr]
void QSizePolicy::setVerticalStretch(int stretchFactor)
Setzt den vertikalen Streckungsfaktor der Größenrichtlinie auf den angegebenen Wert stretchFactor. stretchFactor muss im Bereich [0,255] liegen.
Wenn zwei Widgets in einem vertikalen Layout nebeneinander liegen, stellt die Einstellung des vertikalen Streckungsfaktors des Widgets oben auf 2 und des Faktors des Widgets unten auf 1 sicher, dass das Widget oben immer doppelt so groß ist wie das Widget unten.
Siehe auch verticalStretch(), setHorizontalStretch(), und setVerticalPolicy().
[constexpr noexcept]
void QSizePolicy::setWidthForHeight(bool dependent)
Setzt das Flag, das bestimmt, ob die Breite des Widgets von seiner Höhe abhängt, auf dependent.
Dies wird nur für die Unterklassen von QGraphicsLayout unterstützt. Es ist nicht möglich, ein Layout mit den Beschränkungen Höhe-für-Breite und Breite-für-Höhe gleichzeitig zu haben.
Siehe auch hasWidthForHeight() und setHeightForWidth().
[constexpr noexcept]
void QSizePolicy::transpose()
Vertauscht die horizontalen und vertikalen Richtlinien und streckt sie.
Siehe auch transposed().
[constexpr noexcept]
QSizePolicy QSizePolicy::transposed() const
Gibt ein Größenrichtlinienobjekt zurück, bei dem die horizontalen und vertikalen Richtlinien und Dehnungen vertauscht sind.
Siehe auch transpose().
[constexpr noexcept]
QSizePolicy::Policy QSizePolicy::verticalPolicy() const
Gibt die vertikale Komponente der Größenpolitik zurück.
Siehe auch setVerticalPolicy(), horizontalPolicy(), und verticalStretch().
[constexpr noexcept]
int QSizePolicy::verticalStretch() const
Gibt den vertikalen Streckungsfaktor der Größenrichtlinie zurück.
Siehe auch setVerticalStretch(), horizontalStretch(), und verticalPolicy().
QVariant QSizePolicy::operator QVariant() const
Gibt eine QVariant zurück, die diese QSizePolicy speichert.
[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 gleich other ist; 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öße policy in den Datenstrom stream.
Siehe auch Format der QDataStream-Operatoren.
QDataStream &operator>>(QDataStream &stream, QSizePolicy &policy)
Liest die Größe policy aus dem Datenstrom stream.
Siehe auch Format der QDataStream-Operatoren.
© 2025 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.