QSizePolicy Class
La clase QSizePolicy es un atributo de diseño que describe la política de redimensionamiento horizontal y vertical. Más...
| Cabecera: | #include <QSizePolicy> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets)target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
Tipos Públicos
| enum | ControlType { DefaultType, ButtonBox, CheckBox, ComboBox, Frame, …, ToolButton } |
| flags | ControlTypes |
| enum | Policy { Fixed, Minimum, Maximum, Preferred, Expanding, …, Ignored } |
| enum | PolicyFlag { GrowFlag, ExpandFlag, ShrinkFlag, IgnoreFlag } |
Funciones públicas
| 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 |
No miembros relacionados
| size_t | qHash(QSizePolicy key, size_t seed = 0) |
| QDataStream & | operator<<(QDataStream &stream, const QSizePolicy &policy) |
| QDataStream & | operator>>(QDataStream &stream, QSizePolicy &policy) |
Descripción detallada
La política de tamaño de un widget es una expresión de su disposición a ser redimensionado de varias formas, y afecta a cómo el widget es tratado por el motor de maquetación. Cada widget devuelve una QSizePolicy que describe la política de redimensionamiento horizontal y vertical que prefiere al ser maquetado. Puedes cambiar esto para un widget específico cambiando su propiedad QWidget::sizePolicy.
QSizePolicy contiene dos valores independientes QSizePolicy::Policy y dos factores de estiramiento; uno describe la política de tamaño horizontal del widget, y el otro describe su política de tamaño vertical. También contiene una bandera para indicar si la altura y la anchura de su tamaño preferido están relacionadas.
Las políticas horizontal y vertical pueden establecerse en el constructor y modificarse mediante las funciones setHorizontalPolicy() y setVerticalPolicy(). Los factores de estiramiento pueden establecerse mediante las funciones setHorizontalStretch() y setVerticalStretch(). La bandera que indica si el widget sizeHint() depende de la anchura (como una barra de menú o una etiqueta que envuelve palabras) puede establecerse utilizando la función setHeightForWidth().
Las políticas de tamaño y los factores de estiramiento actuales pueden recuperarse mediante las funciones horizontalPolicy(), verticalPolicy(), horizontalStretch() y verticalStretch(). Alternativamente, utilice la función transpose() para intercambiar las políticas y estiramientos horizontales y verticales. La función hasHeightForWidth() devuelve el estado actual de la bandera que indica las dependencias de sugerencia de tamaño.
Utilice la función expandingDirections() para determinar si el widget asociado puede hacer uso de más espacio del que indica su función sizeHint(), así como para averiguar en qué direcciones puede expandirse.
Finalmente, la clase QSizePolicy proporciona operadores que comparan esta política de tamaño con una política dada, así como un operador QVariant que almacena esta QSizePolicy como un objeto QVariant.
Véase también QSize, QWidget::sizeHint(), QWidget::sizePolicy, y QLayoutItem::sizeHint().
Documentación de tipos de miembros
enum QSizePolicy::ControlType
banderas QSizePolicy::ControlTypes
Este enum especifica los diferentes tipos de widgets en términos de interacción de diseño:
| Constante | Valor | Descripción |
|---|---|---|
QSizePolicy::DefaultType | 0x00000001 | El tipo por defecto, cuando no se especifica ninguno. |
QSizePolicy::ButtonBox | 0x00000002 | Una instancia de QDialogButtonBox. |
QSizePolicy::CheckBox | 0x00000004 | Una instancia de QCheckBox. |
QSizePolicy::ComboBox | 0x00000008 | Una instancia QComboBox. |
QSizePolicy::Frame | 0x00000010 | Una instancia QFrame. |
QSizePolicy::GroupBox | 0x00000020 | Una instancia QGroupBox. |
QSizePolicy::Label | 0x00000040 | Una instancia QLabel. |
QSizePolicy::Line | 0x00000080 | Una instancia QFrame con QFrame::HLine o QFrame::VLine. |
QSizePolicy::LineEdit | 0x00000100 | Una instancia QLineEdit. |
QSizePolicy::PushButton | 0x00000200 | Una instancia QPushButton. |
QSizePolicy::RadioButton | 0x00000400 | Una instancia QRadioButton. |
QSizePolicy::Slider | 0x00000800 | Una instancia QAbstractSlider. |
QSizePolicy::SpinBox | 0x00001000 | Una instancia QAbstractSpinBox. |
QSizePolicy::TabWidget | 0x00002000 | Una instancia QTabWidget. |
QSizePolicy::ToolButton | 0x00004000 | Una instancia QToolButton. |
El tipo ControlTypes es un typedef para QFlags<ControlType>. Almacena una combinación OR de valores ControlType.
Véase también setControlType() y controlType().
enum QSizePolicy::Policy
Este enum describe los distintos tipos de tamaño por dimensión utilizados al construir un QSizePolicy.
| Constante | Valor | Descripción |
|---|---|---|
QSizePolicy::Fixed | 0 | El QWidget::sizeHint() es la única alternativa aceptable, por lo que el widget nunca puede crecer o encogerse (por ejemplo, la dirección vertical de un botón pulsador). |
QSizePolicy::Minimum | GrowFlag | El sizeHint() es mínimo, y suficiente. El widget puede expandirse, pero no hay ninguna ventaja en que sea más grande (por ejemplo, la dirección horizontal de un botón pulsador). No puede ser más pequeño que el tamaño proporcionado por sizeHint(). |
QSizePolicy::Maximum | ShrinkFlag | El sizeHint() es un máximo. El widget puede encogerse cualquier cantidad sin detrimento si otros widgets necesitan el espacio (por ejemplo, una línea separadora). No puede ser mayor que el tamaño proporcionado por sizeHint(). |
QSizePolicy::Preferred | GrowFlag | ShrinkFlag | sizeHint() es lo mejor, pero el widget puede encogerse y seguir siendo útil. El widget puede expandirse, pero no hay ninguna ventaja en que sea más grande que sizeHint() (la política por defecto QWidget ). |
QSizePolicy::Expanding | GrowFlag | ShrinkFlag | ExpandFlag | El tamaño de sizeHint() es razonable, pero el widget puede reducirse y seguir siendo útil. El widget puede hacer uso de espacio extra, por lo que debe obtener tanto espacio como sea posible (por ejemplo, la dirección horizontal de un deslizador horizontal). |
QSizePolicy::MinimumExpanding | GrowFlag | ExpandFlag | La función sizeHint() es mínima y suficiente. El widget puede hacer uso de espacio extra, por lo que debe obtener tanto espacio como sea posible (por ejemplo, la dirección horizontal de un deslizador horizontal). |
QSizePolicy::Ignored | ShrinkFlag | GrowFlag | IgnoreFlag | Se ignora sizeHint(). El widget obtendrá tanto espacio como sea posible. |
Véase también PolicyFlag, setHorizontalPolicy(), y setVerticalPolicy().
enum QSizePolicy::PolicyFlag
Estas banderas se combinan entre sí para formar los distintos valores de Policy:
| Constante | Valor | Descripción |
|---|---|---|
QSizePolicy::GrowFlag | 1 | El widget puede crecer más allá de su sugerencia de tamaño si es necesario. |
QSizePolicy::ExpandFlag | 2 | El widget debe tener tanto espacio como sea posible. |
QSizePolicy::ShrinkFlag | 4 | El widget puede encogerse por debajo de su tamaño si es necesario. |
QSizePolicy::IgnoreFlag | 8 | La sugerencia de tamaño del widget se ignora. El widget obtendrá tanto espacio como sea posible. |
Véase también Policy.
Documentación de las funciones miembro
[constexpr noexcept] QSizePolicy::QSizePolicy()
Construye un objeto QSizePolicy con Fixed como sus políticas horizontal y vertical.
Las políticas pueden modificarse mediante las funciones setHorizontalPolicy() y setVerticalPolicy(). Utilice la función setHeightForWidth() si la altura preferida del widget depende de la anchura del widget (por ejemplo, un QLabel con ajuste de líneas).
Véase también setHorizontalStretch() y setVerticalStretch().
[constexpr noexcept] QSizePolicy::QSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical, QSizePolicy::ControlType type = DefaultType)
Construye un objeto QSizePolicy con las políticas horizontal y vertical dadas, y el control type especificado.
Utilice setHeightForWidth() si la altura preferida del widget depende de la anchura del widget (por ejemplo, un QLabel con ajuste de línea).
Véase también setHorizontalStretch(), setVerticalStretch() y controlType().
[noexcept] QSizePolicy::ControlType QSizePolicy::controlType() const
Devuelve el tipo de control asociado al widget al que se aplica esta política de tamaño.
Véase también setControlType().
[constexpr noexcept] Qt::Orientations QSizePolicy::expandingDirections() const
Devuelve si un widget puede hacer uso de más espacio del que indica la función QWidget::sizeHint().
Un valor de Qt::Horizontal o Qt::Vertical significa que el widget puede crecer horizontal o verticalmente (es decir, la política horizontal o vertical es Expanding o MinimumExpanding), mientras que Qt::Horizontal | Qt::Vertical significa que puede crecer en ambas dimensiones.
Véase también horizontalPolicy() y verticalPolicy().
[constexpr noexcept] bool QSizePolicy::hasHeightForWidth() const
Devuelve true si la altura preferida del widget depende de su anchura; en caso contrario devuelve false.
Véase también setHeightForWidth().
[constexpr noexcept] bool QSizePolicy::hasWidthForHeight() const
Devuelve true si la anchura del widget depende de su altura; en caso contrario devuelve false.
Véase también setWidthForHeight().
[constexpr noexcept] QSizePolicy::Policy QSizePolicy::horizontalPolicy() const
Devuelve el componente horizontal de la política de tamaño.
Véase también setHorizontalPolicy(), verticalPolicy() y horizontalStretch().
[constexpr noexcept] int QSizePolicy::horizontalStretch() const
Devuelve el factor de estiramiento horizontal de la política de tamaño.
Véase también setHorizontalStretch(), verticalStretch() y horizontalPolicy().
[constexpr noexcept] bool QSizePolicy::retainSizeWhenHidden() const
Devuelve si el diseño debe mantener el tamaño del widget cuando está oculto. Por defecto es false.
Véase también setRetainSizeWhenHidden().
[noexcept] void QSizePolicy::setControlType(QSizePolicy::ControlType type)
Establece el tipo de control asociado con el widget al que se aplica esta política de tamaño en type.
El tipo de control especifica el tipo de widget al que se aplica esta política de tamaño. Lo utilizan algunos estilos, en particular QMacStyle, para insertar el espaciado adecuado entre widgets. Por ejemplo, las directrices Aqua de macOS especifican que los botones pulsadores deben estar separados por 12 píxeles, mientras que los botones de radio apilados verticalmente sólo requieren 6 píxeles.
Véase también controlType() y QStyle::layoutSpacing().
[constexpr noexcept] void QSizePolicy::setHeightForWidth(bool dependent)
Establece la bandera que determina si la altura preferida del widget depende de su anchura, a dependent.
Véase también hasHeightForWidth() y setWidthForHeight().
[constexpr noexcept] void QSizePolicy::setHorizontalPolicy(QSizePolicy::Policy policy)
Establece el componente horizontal en la dirección policy.
Véase también horizontalPolicy(), setVerticalPolicy() y setHorizontalStretch().
[constexpr] void QSizePolicy::setHorizontalStretch(int stretchFactor)
Establece el factor de estiramiento horizontal de la política de tamaño en stretchFactor. stretchFactor debe estar en el rango [0,255].
Cuando hay dos widgets adyacentes en una disposición horizontal, si se establece el factor de estiramiento horizontal del widget de la izquierda en 2 y el factor del widget de la derecha en 1, se garantizará que el widget de la izquierda siempre tenga el doble de tamaño que el de la derecha.
Véase también horizontalStretch(), setVerticalStretch() y setHorizontalPolicy().
[constexpr noexcept] void QSizePolicy::setRetainSizeWhenHidden(bool retainSize)
Establece si un diseño debe mantener el tamaño del widget cuando se oculta. Si retainSize es true, el diseño no cambiará al ocultar el widget.
Véase también retainSizeWhenHidden().
[constexpr noexcept] void QSizePolicy::setVerticalPolicy(QSizePolicy::Policy policy)
Establece el componente vertical en la dirección policy.
Véase también verticalPolicy(), setHorizontalPolicy() y setVerticalStretch().
[constexpr] void QSizePolicy::setVerticalStretch(int stretchFactor)
Establece el factor de estiramiento vertical de la política de tamaño en stretchFactor. stretchFactor debe estar en el rango [0,255].
Cuando dos widgets son adyacentes en un diseño vertical, establecer el factor de estiramiento vertical del widget de la parte superior a 2 y el factor del widget de la parte inferior a 1 garantizará que el widget de la parte superior tenga siempre el doble de tamaño que el de la parte inferior.
Véase también verticalStretch(), setHorizontalStretch() y setVerticalPolicy().
[constexpr noexcept] void QSizePolicy::setWidthForHeight(bool dependent)
Establece la bandera que determina si la anchura del widget depende de su altura, en dependent.
Esto sólo es compatible con las subclases de QGraphicsLayout. No es posible tener un diseño con restricciones de altura por anchura y anchura por altura al mismo tiempo.
Véase también hasWidthForHeight() y setHeightForWidth().
[constexpr noexcept] void QSizePolicy::transpose()
Intercambia las políticas horizontal y vertical y estira.
Véase también transposed().
[constexpr noexcept] QSizePolicy QSizePolicy::transposed() const
Devuelve un objeto de política de tamaño con las políticas horizontal y vertical y los tramos intercambiados.
Véase también transpose().
[constexpr noexcept] QSizePolicy::Policy QSizePolicy::verticalPolicy() const
Devuelve el componente vertical de la política de tamaño.
Véase también setVerticalPolicy(), horizontalPolicy() y verticalStretch().
[constexpr noexcept] int QSizePolicy::verticalStretch() const
Devuelve el factor de estiramiento vertical de la política de tamaño.
Véase también setVerticalStretch(), horizontalStretch() y verticalPolicy().
QSizePolicy::operator QVariant() const
Devuelve un QVariant que almacena este QSizePolicy.
[constexpr noexcept] bool QSizePolicy::operator!=(const QSizePolicy &other) const
Devuelve true si esta política es diferente de other; en caso contrario devuelve false.
Véase también operator==().
[constexpr noexcept] bool QSizePolicy::operator==(const QSizePolicy &other) const
Devuelve true si esta política es igual a other; en caso contrario devuelve false.
Véase también operator!=().
Relacionados No miembros
[noexcept] size_t qHash(QSizePolicy key, size_t seed = 0)
Devuelve el valor hash para key, utilizando seed para sembrar el cálculo.
QDataStream &operator<<(QDataStream &stream, const QSizePolicy &policy)
Escribe el tamaño policy en el flujo de datos stream.
Véase también Formato de los operadores QDataStream.
QDataStream &operator>>(QDataStream &stream, QSizePolicy &policy)
Lee el tamaño policy del flujo de datos stream.
Véase también Formato de los operadores QDataStream.
© 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.