QStyleOption Class
QStyleOption 클래스는 QStyle 함수에서 사용하는 매개변수를 저장합니다. 더 보기...
| 헤더: | #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 |
Public Types
| 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(const QStyleOption *option) |
| T | qstyleoption_cast(QStyleOption *option) |
상세 설명
QStyleOption 및 그 하위 클래스에는 QStyle 함수가 그래픽 요소를 그리는 데 필요한 모든 정보가 포함되어 있습니다.
성능상의 이유로 멤버 함수는 거의 없으며, 멤버 변수에 대한 액세스는 직접적으로 이루어집니다(즉, . 또는 -> 연산자를 사용). 이로 인해 구조체를 사용하기 쉬우며, 이들이 단순히 스타일 함수가 사용하는 매개변에 불과하다는 점이 강조됩니다.
QStyle 함수를 호출하는 쪽은 대개 스택에 QStyleOption 객체를 생성합니다. 이는 Qt가 QString, QPalette, QColor 와 같은 유형에 대해 암시적 공유를 광범위하게 사용하는 것과 결합되어, 불필요한 메모리 할당이 발생하지 않도록 보장합니다.
다음 코드 조각은 특정 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 입니다.
QStyle 의 QStyleOption 매개변수를 받는 함수를 재구현할 때, 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) {
// ...
}
}
// ...
}option 이 가리키는 객체의 유형이 올바르지 않은 경우, qstyleoption_cast() 함수는 0을 반환합니다.
QStyle 및 QStylePainter도 참조하십시오 .
멤버 유형 문서
enum QStyleOption::OptionType
이 열거형은 ` QStyleOption`, 그 하위 클래스들, 그리고 ` qstyleoption_cast()`에서 스타일 옵션의 유형을 판단하기 위해 내부적으로 사용됩니다. 일반적으로는 직접 ` QStyleOption `의 하위 클래스를 만들고 고유한 스타일을 정의하려는 경우가 아니라면 이 부분에 대해 신경 쓸 필요가 없습니다.
| 상수 | 값 | 설명 |
|---|---|---|
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 (인터뷰에서 사용됨) |
사용자 정의 컨트롤에는 다음 값들이 사용됩니다:
| 상수 | 값 | 설명 |
|---|---|---|
QStyleOption::SO_CustomBase | 0xf00 | 사용자 정의 QStyleOptions용으로 예약됨; 모든 사용자 정의 컨트롤 값은 이 값보다 커야 함 |
QStyleOption::SO_ComplexCustomBase | 0xf000000 | 사용자 정의 QStyleOptions용으로 예약됨; 모든 사용자 정의 복합 컨트롤의 값은 이 값보다 커야 함 |
type도 참조하십시오 .
enum QStyleOption::StyleOptionType
이 열거형은 스타일 옵션의 유형에 대한 정보를 담기 위해 사용되며, 각 ` QStyleOption ` 하위 클래스에 대해 정의됩니다.
| 상수 | 상수 | 설명 |
|---|---|---|
QStyleOption::Type | SO_Default | 제공된 스타일 옵션의 유형(이 클래스의 경우SO_Default ). |
이 유형은 ` QStyleOption`, 그 하위 클래스 및 ` qstyleoption_cast()`에서 스타일 옵션의 유형을 결정하기 위해 내부적으로 사용됩니다. 일반적으로 사용자 정의 ` QStyleOption ` 하위 클래스와 사용자 정의 스타일을 만들려는 경우가 아니라면 이 사항에 대해 걱정할 필요가 없습니다.
StyleOptionVersion도 참조하십시오 .
enum QStyleOption::StyleOptionVersion
이 열거형은 스타일 옵션의 버전에 대한 정보를 담기 위해 사용되며, 각 ` QStyleOption ` 하위 클래스에 대해 정의됩니다.
| 상수 | 상수 | 상수값 |
|---|---|---|
QStyleOption::Version | 1 | 1 |
이 버전은 QStyleOption 의 하위 클래스에서 호환성을 해치지 않고 확장을 구현하는 데 사용됩니다. qstyleoption_cast()를 사용하는 경우, 일반적으로 이 값을 확인할 필요가 없습니다.
StyleOptionType도 참조하십시오 .
멤버 함수 문서
QStyleOption::QStyleOption(int version = QStyleOption::Version, int type = SO_Default)
지정된 ` version ` 및 ` type`을 사용하여 `QStyleOption` 객체를 생성합니다.
버전(version)은 QStyleOption에 있어 특별한 의미를 가지지 않으며, 하위 클래스에서 동일한 옵션 유형의 서로 다른 버전을 구별하는 데 사용할 수 있습니다.
state 멤버 변수는 QStyle::State_None 로 초기화됩니다.
QStyleOption::QStyleOption(const QStyleOption &other)
other 의 복사본을 생성합니다.
[noexcept] QStyleOption::~QStyleOption()
이 스타일 옵션 객체를 삭제합니다.
void QStyleOption::initFrom(const QWidget *widget)
지정된 widget 를 기반으로 state, direction, rect, palette, fontMetrics 및 styleObject 멤버 변수를 초기화합니다.
이 함수는 편의 함수이며, 멤버 변수는 수동으로 초기화할 수도 있습니다.
QWidget::layoutDirection(), QWidget::rect(), QWidget::palette() 및 QWidget::fontMetrics()도 참조하십시오 .
QStyleOption &QStyleOption::operator=(const QStyleOption &other)
other 을 이 QStyleOption 에 할당하세요.
멤버 변수 설명서
Qt::LayoutDirection QStyleOption::direction
이 변수는 컨트롤에 텍스트를 그릴 때 사용해야 할 텍스트 배치 방향을 저장합니다.
기본적으로 레이아웃 방향은 ' Qt::LeftToRight'입니다.
initFrom()도 참조하십시오 .
QFontMetrics QStyleOption::fontMetrics
이 변수는 컨트롤에 텍스트를 그릴 때 사용해야 할 글꼴 메트릭을 저장합니다.
기본적으로 응용 프로그램의 기본 글꼴이 사용됩니다.
initFrom()도 참조하십시오 .
QPalette QStyleOption::palette
이 변수는 컨트롤을 채울 때 사용해야 할 팔레트를 저장합니다.
기본적으로 응용 프로그램의 기본 팔레트가 사용됩니다.
initFrom()도 참조하십시오 .
QRect QStyleOption::rect
이 변수는 다양한 계산 및 그리기 작업에 사용되어야 할 영역을 나타냅니다.
이는 요소 유형에 따라 다른 의미를 가질 수 있습니다. 예를 들어, ` QStyle::CE_PushButton ` 요소의 경우 버튼 전체를 포함하는 직사각형이 되지만, ` QStyle::CE_PushButtonLabel ` 요소의 경우 푸시 버튼 레이블이 있는 영역만 포함하게 됩니다.
기본값은 null 사각형, 즉 너비와 높이가 모두 0으로 설정된 사각형입니다.
initFrom()도 참조하십시오 .
QStyle::State QStyleOption::state
이 변수는 컨트롤을 그릴 때 사용되는 스타일 플래그를 저장합니다.
기본값은 QStyle::State_None 입니다.
initFrom(), QStyle::drawPrimitive(), QStyle::drawControl(), QStyle::drawComplexControl() 및 QStyle::State도 참조하십시오 .
QObject *QStyleOption::styleObject
이 변수는 스타일이 적용되는 객체를 담습니다
내장 스타일은 다음 유형을 지원합니다: QWidget, QGraphicsObject 및 QQuickItem.
initFrom()도 참조하십시오 .
int QStyleOption::type
이 변수는 스타일 옵션의 옵션 유형을 저장합니다.
기본값은 SO_Default 입니다.
OptionType도 참조하십시오 .
int QStyleOption::version
이 변수는 스타일 옵션의 버전을 저장합니다.
이 값은 하위 클래스에서 호환성을 해치지 않고 확장 기능을 구현하는 데 사용할 수 있습니다. qstyleoption_cast() 함수를 사용하는 경우, 일반적으로 이 값을 확인할 필요가 없습니다.
기본값은 1입니다.
관련 비회원
template <typename T> T qstyleoption_cast(const QStyleOption *option)
주어진 ` option`의 ` type ` 및 ` version `에 따라 `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::type 및 QStyleOption::version도 참조하십시오 .
template <typename T> T qstyleoption_cast(QStyleOption *option)
주어진 ` option`의 유형에 따라 `T` 또는 ` nullptr `를 반환합니다.
이 함수는 오버로드된 함수입니다.
© 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.