En esta página

QStyleOption Class

La clase QStyleOption almacena los parámetros utilizados por las funciones QStyle. Más...

Cabecera: #include <QStyleOption>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Heredado por:
16 tipos

QStyleOptionButton, QStyleOptionComplex, QStyleOptionDockWidget, QStyleOptionFocusRect, QStyleOptionFrame, QStyleOptionGraphicsItem, QStyleOptionHeader, QStyleOptionMenuItem, QStyleOptionProgressBar, QStyleOptionRubberBand, QStyleOptionTab, QStyleOptionTabBarBase, QStyleOptionTabWidgetFrame, QStyleOptionToolBar, QStyleOptionToolBox, y QStyleOptionViewItem

Tipos públicos

enum OptionType { SO_Button, SO_ComboBox, SO_Complex, SO_Default, SO_DockWidget, …, SO_ComplexCustomBase }
enum StyleOptionType { Type }
enum StyleOptionVersion { Version }

Funciones públicas

QStyleOption(int version = QStyleOption::Version, int type = SO_Default)
QStyleOption(const QStyleOption &other)
~QStyleOption()
void initFrom(const QWidget *widget)
QStyleOption &operator=(const QStyleOption &other)

Variables públicas

Qt::LayoutDirection direction
QFontMetrics fontMetrics
QPalette palette
QRect rect
QStyle::State state
QObject *styleObject
int type
int version
T qstyleoption_cast(QStyleOption *option)
T qstyleoption_cast(const QStyleOption *option)

Descripción Detallada

QStyleOption y sus subclases contienen toda la información que las funciones de QStyle necesitan para dibujar un elemento gráfico.

Por razones de rendimiento, hay pocas funciones miembro y el acceso a las variables miembro es directo (es decir, utilizando el operador . o -> ). Esto hace que las estructuras sean fáciles de utilizar y pone de relieve que se trata simplemente de parámetros utilizados por las funciones de estilo.

Quien llama a una función QStyle suele crear objetos QStyleOption en la pila. Esto combinado con el uso extensivo de Qt de compartir implícitamente para tipos como QString, QPalette, y QColor asegura que no se produzca una asignación de memoria innecesaria.

El siguiente fragmento de código muestra cómo utilizar una subclase específica de QStyleOption para pintar un botón pulsador:

void MyPushButton::paintEvent(QPaintEvent *)
{
    QStyleOptionButton option;
    option.initFrom(this);
    option.state = isDown() ? QStyle::State_Sunken : QStyle::State_Raised;
    if (isDefault())
        option.features |= QStyleOptionButton::DefaultButton;
    option.text = text();
    option.icon = icon();

    QPainter painter(this);
    style()->drawControl(QStyle::CE_PushButton, &option, &painter, this);
}

En nuestro ejemplo, el control es un QStyle::CE_PushButton, y según la documentación de QStyle::drawControl() la clase correspondiente es QStyleOptionButton.

Al reimplementar funciones de QStyle que toman un parámetro QStyleOption, a menudo es necesario asignar QStyleOption a una subclase. Por seguridad, puede utilizar qstyleoption_cast() para asegurarse de que el tipo de puntero es correcto. Por ejemplo:

void MyStyle::drawPrimitive(PrimitiveElement element,
                            const QStyleOption *option,
                            QPainter *painter,
                            const QWidget *widget)
{
    if (element == PE_FrameFocusRect) {
        const QStyleOptionFocusRect *focusRectOption =
                qstyleoption_cast<const QStyleOptionFocusRect *>(option);
        if (focusRectOption) {
            // ...
        }
    }
    // ...
}

La función qstyleoption_cast() devolverá 0 si el objeto al que apunta option no es del tipo correcto.

Véase también QStyle y QStylePainter.

Documentación de tipos de miembros

enum QStyleOption::OptionType

Este enum es usado internamente por QStyleOption, sus subclases, y qstyleoption_cast() para determinar el tipo de opción de estilo. En general no necesitas preocuparte por esto a menos que quieras crear tu propia subclase QStyleOption y tus propios estilos.

ConstanteValorDescripción
QStyleOption::SO_Button2QStyleOptionButton
QStyleOption::SO_ComboBox0xf0004QStyleOptionComboBox
QStyleOption::SO_Complex0xf0000QStyleOptionComplex
QStyleOption::SO_Default0QStyleOption
QStyleOption::SO_DockWidget9QStyleOptionDockWidget
QStyleOption::SO_FocusRect1QStyleOptionFocusRect
QStyleOption::SO_Frame5QStyleOptionFrame
QStyleOption::SO_GraphicsItem15QStyleOptionGraphicsItem
QStyleOption::SO_GroupBox0xf0006QStyleOptionGroupBox
QStyleOption::SO_Header8QStyleOptionHeader
QStyleOption::SO_MenuItem4QStyleOptionMenuItemV2
QStyleOption::SO_ProgressBar6QStyleOptionProgressBar
QStyleOption::SO_RubberBand13QStyleOptionRubberBand
QStyleOption::SO_SizeGrip0xf0007QStyleOptionSizeGrip
QStyleOption::SO_Slider0xf0001QStyleOptionSlider
QStyleOption::SO_SpinBox0xf0002QStyleOptionSpinBox
QStyleOption::SO_Tab3QStyleOptionTab
QStyleOption::SO_TabBarBase12QStyleOptionTabBarBase
QStyleOption::SO_TabWidgetFrame11QStyleOptionTabWidgetFrame
QStyleOption::SO_TitleBar0xf0005QStyleOptionTitleBar
QStyleOption::SO_ToolBar14QStyleOptionToolBar
QStyleOption::SO_ToolBox7QStyleOptionToolBox
QStyleOption::SO_ToolButton0xf0003QStyleOptionToolButton
QStyleOption::SO_ViewItem10QStyleOptionViewItem (utilizado en Interviews)

Los siguientes valores se utilizan para los controles personalizados:

ConstanteValorDescripción
QStyleOption::SO_CustomBase0xf00Reservado para QStyleOptions personalizados; todos los valores de los controles personalizados deben estar por encima de este valor
QStyleOption::SO_ComplexCustomBase0xf000000Reservado para QStyleOptions personalizados; todos los valores de los controles complejos personalizados deben estar por encima de este valor

Véase también type.

enum QStyleOption::StyleOptionType

Este enum se utiliza para guardar información sobre el tipo de la opción de estilo, y se define para cada subclase de QStyleOption.

ConstanteValorDescripción
QStyleOption::TypeSO_DefaultEl tipo de opción de estilo proporcionada (SO_Default para esta clase).

El tipo es utilizado internamente por QStyleOption, sus subclases, y qstyleoption_cast() para determinar el tipo de opción de estilo. En general no necesitas preocuparte por esto a menos que quieras crear tu propia subclase QStyleOption y tus propios estilos.

Véase también StyleOptionVersion.

enum QStyleOption::StyleOptionVersion

Este enum se utiliza para guardar información sobre la versión de la opción de estilo, y se define para cada subclase de QStyleOption.

ConstanteValorDescripción
QStyleOption::Version11

La versión es utilizada por las subclases de QStyleOption para implementar extensiones sin romper la compatibilidad. Si utiliza qstyleoption_cast(), normalmente no necesita comprobarla.

Véase también StyleOptionType.

Documentación de funciones miembro

QStyleOption::QStyleOption(int version = QStyleOption::Version, int type = SO_Default)

Construye una QStyleOption con los valores version y type especificados.

La versión no tiene ningún significado especial para QStyleOption; puede ser utilizada por subclases para distinguir entre diferentes versiones del mismo tipo de opción.

La variable miembro state se inicializa con el valor QStyle::State_None.

Véase también version y type.

QStyleOption::QStyleOption(const QStyleOption &other)

Construye una copia de other.

[noexcept] QStyleOption::~QStyleOption()

Destruye este objeto de opción de estilo.

void QStyleOption::initFrom(const QWidget *widget)

Inicializa las variables miembro state, direction, rect, palette, fontMetrics y styleObject basándose en la widget especificada.

Se trata de una función práctica; las variables miembro también pueden inicializarse manualmente.

Véase también QWidget::layoutDirection(), QWidget::rect(), QWidget::palette() y QWidget::fontMetrics().

QStyleOption &QStyleOption::operator=(const QStyleOption &other)

Asigne other a este QStyleOption.

Documentación de variables miembro

Qt::LayoutDirection QStyleOption::direction

Esta variable contiene la dirección del diseño del texto que debe utilizarse al dibujar texto en el control.

Por defecto, la dirección del diseño es Qt::LeftToRight.

Véase también initFrom().

QFontMetrics QStyleOption::fontMetrics

Esta variable contiene la métrica de la fuente que debe utilizarse al dibujar texto en el control

Por defecto, se utiliza la fuente por defecto de la aplicación.

Véase también initFrom().

QPalette QStyleOption::palette

Esta variable contiene la paleta que debe utilizarse al pintar el control

Por defecto, se utiliza la paleta por defecto de la aplicación.

Véase también initFrom().

QRect QStyleOption::rect

Esta variable contiene el área que debe utilizarse para diversos cálculos y pintura.

Esto puede tener diferentes significados para diferentes tipos de elementos. Por ejemplo, para un elemento QStyle::CE_PushButton sería el rectángulo para todo el botón, mientras que para un elemento QStyle::CE_PushButtonLabel sería sólo el área para la etiqueta del pulsador.

El valor por defecto es un rectángulo nulo, es decir, un rectángulo con la anchura y la altura fijadas en 0.

Véase también initFrom().

QStyle::State QStyleOption::state

Esta variable contiene las banderas de estilo que se utilizan al dibujar el control

El valor por defecto es QStyle::State_None.

Véase también initFrom(), QStyle::drawPrimitive(), QStyle::drawControl(), QStyle::drawComplexControl() y QStyle::State.

QObject *QStyleOption::styleObject

Esta variable contiene el objeto al que se aplica el estilo

Los estilos incorporados admiten los siguientes tipos: QWidget QGraphicsObject y QQuickItem.

Véase también initFrom().

int QStyleOption::type

Esta variable contiene el tipo de opción de la opción de estilo

El valor por defecto es SO_Default.

Véase también OptionType.

int QStyleOption::version

Esta variable contiene la versión de la opción de estilo

Este valor puede ser utilizado por subclases para implementar extensiones sin romper la compatibilidad. Si utiliza la función qstyleoption_cast(), normalmente no necesitará comprobarlo.

El valor por defecto es 1.

No miembros relacionados

template <typename T> T qstyleoption_cast(QStyleOption *option)

Devuelve un T o nullptr dependiendo del tipo del option dado.

Se trata de una función sobrecargada.

template <typename T> T qstyleoption_cast(const QStyleOption *option)

Devuelve una T o nullptr dependiendo de type y version del option dado.

Ejemplo:

void MyStyle::drawPrimitive(PrimitiveElement element,
                            const QStyleOption *option,
                            QPainter *painter,
                            const QWidget *widget)
{
    if (element == PE_FrameFocusRect) {
        const QStyleOptionFocusRect *focusRectOption =
                qstyleoption_cast<const QStyleOptionFocusRect *>(option);
        if (focusRectOption) {
            // ...
        }
    }
    // ...
}

Véase también QStyleOption::type y QStyleOption::version.

© 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.