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 tiposQStyleOptionButton, 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 |
No miembros relacionados
| 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.
| Constante | Valor | Descripción |
|---|---|---|
QStyleOption::SO_Button | 2 | QStyleOptionButton |
QStyleOption::SO_ComboBox | 0xf0004 | QStyleOptionComboBox |
QStyleOption::SO_Complex | 0xf0000 | QStyleOptionComplex |
QStyleOption::SO_Default | 0 | QStyleOption |
QStyleOption::SO_DockWidget | 9 | QStyleOptionDockWidget |
QStyleOption::SO_FocusRect | 1 | QStyleOptionFocusRect |
QStyleOption::SO_Frame | 5 | QStyleOptionFrame |
QStyleOption::SO_GraphicsItem | 15 | QStyleOptionGraphicsItem |
QStyleOption::SO_GroupBox | 0xf0006 | QStyleOptionGroupBox |
QStyleOption::SO_Header | 8 | QStyleOptionHeader |
QStyleOption::SO_MenuItem | 4 | QStyleOptionMenuItemV2 |
QStyleOption::SO_ProgressBar | 6 | QStyleOptionProgressBar |
QStyleOption::SO_RubberBand | 13 | QStyleOptionRubberBand |
QStyleOption::SO_SizeGrip | 0xf0007 | QStyleOptionSizeGrip |
QStyleOption::SO_Slider | 0xf0001 | QStyleOptionSlider |
QStyleOption::SO_SpinBox | 0xf0002 | QStyleOptionSpinBox |
QStyleOption::SO_Tab | 3 | QStyleOptionTab |
QStyleOption::SO_TabBarBase | 12 | QStyleOptionTabBarBase |
QStyleOption::SO_TabWidgetFrame | 11 | QStyleOptionTabWidgetFrame |
QStyleOption::SO_TitleBar | 0xf0005 | QStyleOptionTitleBar |
QStyleOption::SO_ToolBar | 14 | QStyleOptionToolBar |
QStyleOption::SO_ToolBox | 7 | QStyleOptionToolBox |
QStyleOption::SO_ToolButton | 0xf0003 | QStyleOptionToolButton |
QStyleOption::SO_ViewItem | 10 | QStyleOptionViewItem (utilizado en Interviews) |
Los siguientes valores se utilizan para los controles personalizados:
| Constante | Valor | Descripción |
|---|---|---|
QStyleOption::SO_CustomBase | 0xf00 | Reservado para QStyleOptions personalizados; todos los valores de los controles personalizados deben estar por encima de este valor |
QStyleOption::SO_ComplexCustomBase | 0xf000000 | Reservado 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.
| Constante | Valor | Descripción |
|---|---|---|
QStyleOption::Type | SO_Default | El 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.
| Constante | Valor | Descripción |
|---|---|---|
QStyleOption::Version | 1 | 1 |
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.
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.