En esta página

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
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:

ConstanteValorDescripción
QSizePolicy::DefaultType0x00000001El tipo por defecto, cuando no se especifica ninguno.
QSizePolicy::ButtonBox0x00000002Una instancia de QDialogButtonBox.
QSizePolicy::CheckBox0x00000004Una instancia de QCheckBox.
QSizePolicy::ComboBox0x00000008Una instancia QComboBox.
QSizePolicy::Frame0x00000010Una instancia QFrame.
QSizePolicy::GroupBox0x00000020Una instancia QGroupBox.
QSizePolicy::Label0x00000040Una instancia QLabel.
QSizePolicy::Line0x00000080Una instancia QFrame con QFrame::HLine o QFrame::VLine.
QSizePolicy::LineEdit0x00000100Una instancia QLineEdit.
QSizePolicy::PushButton0x00000200Una instancia QPushButton.
QSizePolicy::RadioButton0x00000400Una instancia QRadioButton.
QSizePolicy::Slider0x00000800Una instancia QAbstractSlider.
QSizePolicy::SpinBox0x00001000Una instancia QAbstractSpinBox.
QSizePolicy::TabWidget0x00002000Una instancia QTabWidget.
QSizePolicy::ToolButton0x00004000Una 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.

ConstanteValorDescripción
QSizePolicy::Fixed0El 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::MinimumGrowFlagEl 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::MaximumShrinkFlagEl 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::PreferredGrowFlag | ShrinkFlagsizeHint() 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::ExpandingGrowFlag | ShrinkFlag | ExpandFlagEl 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::MinimumExpandingGrowFlag | ExpandFlagLa 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::IgnoredShrinkFlag | GrowFlag | IgnoreFlagSe 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:

ConstanteValorDescripción
QSizePolicy::GrowFlag1El widget puede crecer más allá de su sugerencia de tamaño si es necesario.
QSizePolicy::ExpandFlag2El widget debe tener tanto espacio como sea posible.
QSizePolicy::ShrinkFlag4El widget puede encogerse por debajo de su tamaño si es necesario.
QSizePolicy::IgnoreFlag8La 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.