QStyleOption Class

QStyleOption 클래스는 QStyle 함수에 사용되는 매개 변수를 저장합니다. 더 보기...

Header: #include <QStyleOption>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
상속 대상:
16 종류

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

공용 유형

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

공용 함수

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

공용 변수

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)

상세 설명

QStyleOption과 그 서브클래스에는 QStyle 함수가 그래픽 요소를 그리는 데 필요한 모든 정보가 포함되어 있습니다.

성능상의 이유로 멤버 함수는 거의 없으며 멤버 변수에 대한 액세스는 직접적으로(즉, . 또는 -> 연산자 사용) 이루어집니다. 이렇게 하면 구조를 사용하기가 간단하고 스타일 함수가 사용하는 매개변수라는 점을 강조할 수 있습니다.

QStyle 함수의 호출자는 일반적으로 스택에 QStyleOption 객체를 생성합니다. 이는 QString, QPalette, QColor 와 같은 유형에 대한 Qt의 광범위한 암시적 공유 사용과 결합되어 불필요한 메모리 할당이 발생하지 않도록 합니다.

다음 코드 스니펫은 특정 QStyleOption 서브클래스를 사용하여 푸시 버튼을 그리는 방법을 보여줍니다:

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);
}

이 예제에서 컨트롤은 QStyle::CE_PushButton 이며 QStyle::drawControl() 문서에 따르면 해당 클래스는 QStyleOptionButton 입니다.

QStyleOption 매개변수를 취하는 QStyle 함수를 다시 구현할 때, 종종 QStyleOption을 서브클래스로 형변환해야 합니다. 안전을 위해 qstyleoption_cast()를 사용하여 포인터 유형이 올바른지 확인할 수 있습니다. 예를 들어

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) {
            // ...
        }
    }
    // ...
}

qstyleoption_cast() 함수는 option 이 가리키는 객체의 유형이 올바른 유형이 아닌 경우 0을 반환합니다.

QStyleQStylePainter참조하세요 .

멤버 유형 문서

enum QStyleOption::OptionType

이 열거형은 QStyleOption, 그 하위 클래스 및 qstyleoption_cast()에서 스타일 옵션의 유형을 결정하기 위해 내부적으로 사용됩니다. 일반적으로 자체 QStyleOption 서브클래스와 자체 스타일을 만들려는 경우가 아니라면 이에 대해 걱정할 필요가 없습니다.

Constant설명
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_MenuItem4QStyleOptionMenuItem
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 (인터뷰에 사용됨)

다음 값은 사용자 정의 컨트롤에 사용됩니다:

ConstantValueDescription
QStyleOption::SO_CustomBase0xf00모든 사용자 지정 컨트롤 값은 이 값 이상이어야 합니다.
QStyleOption::SO_ComplexCustomBase0xf000000모든 사용자 지정 복합 컨트롤 값은 이 값 이상이어야 합니다.

type참조하세요 .

enum QStyleOption::StyleOptionType

이 열거형은 스타일 옵션의 유형에 대한 정보를 저장하는 데 사용되며 각 QStyleOption 하위 클래스마다 정의됩니다.

Constant설명
QStyleOption::TypeSO_Default제공되는 스타일 옵션의 유형입니다(이 클래스의 경우SO_Default ).

이 유형은 QStyleOption, 그 하위 클래스 및 qstyleoption_cast()에서 스타일 옵션의 유형을 결정하기 위해 내부적으로 사용됩니다. 일반적으로 자체 QStyleOption 하위 클래스와 자체 스타일을 만들려는 경우가 아니라면 이에 대해 걱정할 필요가 없습니다.

StyleOptionVersion참조하세요 .

enum QStyleOption::StyleOptionVersion

이 열거형은 스타일 옵션의 버전에 대한 정보를 저장하는 데 사용되며 각 QStyleOption 서브클래스에 대해 정의됩니다.

Constant설명
QStyleOption::Version11

이 버전은 QStyleOption 하위 클래스에서 호환성을 깨지 않고 확장을 구현하는 데 사용됩니다. qstyleoption_cast ()를 사용하는 경우 일반적으로 확인할 필요가 없습니다.

StyleOptionType참조하세요 .

멤버 함수 문서

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

지정된 versiontype 으로 QStyleOption을 구축합니다.

버전은 특별한 의미가 없으며, 서브 클래스에서 동일한 옵션 유형의 다른 버전을 구별하기 위해 사용할 수 있습니다.

state 멤버 변수는 QStyle::State_None 으로 초기화됩니다.

versiontype도 참조하십시오 .

QStyleOption::QStyleOption(const QStyleOption &other)

other 의 복사본을 생성합니다.

[noexcept] QStyleOption::~QStyleOption()

이 스타일 옵션 개체를 삭제합니다.

void QStyleOption::initFrom(const QWidget *widget)

지정된 widget 을 기준으로 state, direction, rect, palette, fontMetricsstyleObject 멤버 변수를 초기화합니다.

이 함수는 편의성 함수이며 멤버 변수를 수동으로 초기화할 수도 있습니다.

QWidget::layoutDirection(), QWidget::rect(), QWidget::palette() 및 QWidget::fontMetrics()도 참조하세요 .

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

QStyleOptionother 을 할당합니다.

멤버 변수 문서

Qt::LayoutDirection QStyleOption::direction

이 변수는 컨트롤에 텍스트를 그릴 때 사용해야 하는 텍스트 레이아웃 방향을 저장합니다.

기본적으로 레이아웃 방향은 Qt::LeftToRight 입니다.

initFrom()도 참조하세요 .

QFontMetrics QStyleOption::fontMetrics

이 변수에는 컨트롤에 텍스트를 그릴 때 사용해야 하는 글꼴 메트릭이 저장됩니다.

기본적으로 애플리케이션의 기본 글꼴이 사용됩니다.

initFrom()도 참조하세요 .

QPalette QStyleOption::palette

이 변수에는 컨트롤을 칠할 때 사용할 팔레트가 저장됩니다.

기본적으로 애플리케이션의 기본 팔레트가 사용됩니다.

initFrom()도 참조하세요 .

QRect QStyleOption::rect

이 변수에는 다양한 계산 및 페인팅에 사용해야 하는 영역이 저장됩니다.

이 변수는 요소 유형에 따라 다른 의미를 가질 수 있습니다. 예를 들어 QStyle::CE_PushButton 요소의 경우 전체 버튼의 직사각형이 되고 QStyle::CE_PushButtonLabel 요소의 경우 푸시 버튼 레이블의 영역만 됩니다.

기본값은 널 직사각형, 즉 너비와 높이가 모두 0으로 설정된 직사각형입니다.

initFrom()도 참조하세요 .

QStyle::State QStyleOption::state

이 변수에는 컨트롤을 그릴 때 사용되는 스타일 플래그가 저장됩니다.

기본값은 QStyle::State_None 입니다.

initFrom(), QStyle::drawPrimitive(), QStyle::drawControl(), QStyle::drawComplexControl() 및 QStyle::State참조하십시오 .

QObject *QStyleOption::styleObject

이 변수는 스타일 지정 중인 객체를 보유합니다.

기본 제공 스타일은 다음 유형을 지원합니다: QWidget, QGraphicsObjectQQuickItem.

initFrom()도 참조하세요 .

int QStyleOption::type

이 변수에는 스타일 옵션의 옵션 유형이 저장됩니다.

기본값은 SO_Default 입니다.

OptionType참조하세요 .

int QStyleOption::version

이 변수는 스타일 옵션의 버전을 보유합니다.

이 값은 하위 클래스에서 호환성을 깨지 않고 확장을 구현하는 데 사용할 수 있습니다. qstyleoption_cast () 함수를 사용하는 경우 일반적으로 확인할 필요가 없습니다.

기본값은 1입니다.

관련 비회원

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

이 함수는 오버로드된 함수입니다.

주어진 option 의 유형에 따라 T 또는 nullptr 를 반환합니다.

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

주어진 optiontypeversion 에 따라 T 또는 nullptr 를 반환합니다.

예제:

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) {
            // ...
        }
    }
    // ...
}

QStyleOption::typeQStyleOption::version도 참조하세요 .

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