버튼 및 입력 위젯 스타일 지정
이 페이지는 위젯 스타일 참조의 일부입니다. 요소 트리, 스크린샷 및 표에 대한 설명은 해당 페이지를 참조하십시오. 모든 위젯이 설정하는 일반적인 상태 플래그와 멤버는 '스타일이 위젯을 그리는 방법'에 나열되어 있습니다.
푸시 버튼
QPushButton 는 QStyleOptionButton 을 가진 단일 컨트롤 요소 CE_PushButton 를 그립니다. QCommonStyle 는 이를 베벨, 레이블, 포커스 프레임으로 나눕니다:
CE_PushButtonCE_PushButtonBevel(PM_ButtonDefaultIndicator,PM_MenuButtonIndicator)PE_FrameDefaultButton, 기본 버튼의 경우PE_PanelButtonCommandPE_IndicatorArrowDown, 메뉴가 있는 버튼의 경우
CE_PushButtonLabel(SE_PushButtonContents,PM_ButtonShiftHorizontal,PM_ButtonShiftVertical,PM_ButtonIconSize)PE_FrameFocusRect(SE_PushButtonFocusRect)
이 버튼은 ` CT_PushButton ` 및 ` PM_ButtonMargin`을 사용하여 크기 힌트를 계산합니다. 요소의 경계는 스타일에 따라 다릅니다. ` QCommonStyle`에서는 ` PE_FrameDefaultButton `이 전체 베벨 사각형을 반환하며, ` PE_PanelButtonCommand`도 마찬가지입니다. 단, 자동 기본값 버튼의 경우 패널이 각 측면에서 ` PM_ButtonDefaultIndicator `만큼 축소됩니다.

QPushButton 다음과 같은 상태 플래그를 설정합니다:
| 상태 | 다음 조건에서 설정됨 |
|---|---|
State_Sunken | 버튼이 눌리거나 메뉴가 표시될 때. |
State_On | 버튼이 선택된 상태입니다. |
State_Raised | 버튼이 평평하고 눌려 있지 않을 때. |
QStyleOptionButton 의 다른 멤버는 다음과 같습니다:
| 멤버 | 설명 |
|---|---|
| 특징 | 버튼을 설명하는 ` QStyleOptionButton::ButtonFeature ` 열거형의 플래그: 평면, 기본, 자동 기본, 메뉴 포함 또는 명령 링크 버튼. |
| icon | 해당하는 경우, 버튼의 QIcon 입니다. |
| iconSize | 아이콘의 크기입니다. |
| text | 버튼의 텍스트입니다. |
체크박스 및 라디오 버튼
QCheckBox 와 QRadioButton 는 구조가 동일합니다. 둘 다 QStyleOptionButton 를 사용하며, CE_CheckBox 또는 CE_RadioButton 중 하나의 컨트롤 요소를 그립니다. QCommonStyle 는 표시기, 레이블 및 포커스 프레임을 그립니다:
CE_CheckBoxPE_IndicatorCheckBox(SE_CheckBoxIndicator,PM_IndicatorWidth,PM_IndicatorHeight)CE_CheckBoxLabel(SE_CheckBoxContents,PM_CheckBoxLabelSpacing)PE_FrameFocusRect(SE_CheckBoxFocusRect)
CE_RadioButtonPE_IndicatorRadioButton(SE_RadioButtonIndicator,PM_ExclusiveIndicatorWidth,PM_ExclusiveIndicatorHeight)CE_RadioButtonLabel(SE_RadioButtonContents,PM_RadioButtonLabelSpacing)PE_FrameFocusRect(SE_RadioButtonFocusRect)
크기 힌트에는 CT_CheckBox 및 CT_RadioButton 이 사용됩니다. '체크박스 스타일 지정: 단계별 안내'에서는 위젯과 QCommonStyle 코드를 통해 체크박스가 그려지는 과정을 설명합니다.

버튼은 다음과 같은 상태 플래그를 설정합니다:
| 상태 | 다음 조건에서 설정됨 |
|---|---|
State_Sunken | 버튼이 눌릴 때. 클릭 가능한 영역은 SE_CheckBoxClickRect 또는 SE_RadioButtonClickRect 이며, QCommonStyle 에서는 레이블과 표시기를 모두 포함합니다. |
State_NoChange | 체크박스가 부분적으로 선택된 상태입니다(3상태 체크박스). |
State_On | 버튼이 선택된 상태입니다. |
State_Off | 버튼이 선택 해제된 상태입니다. |
QStyleOptionButton 의 다른 구성 요소들은 ‘푸시 버튼’ 항목에 나열되어 있습니다.
도구 버튼
QToolButton 는 QStyleOptionToolButton 가 있는 하나의 복합 컨트롤, CC_ToolButton 을 그립니다. 이 컨트롤에는 버튼 자체와, a menu button 가 설정된 버튼의 경우 메뉴 표시기라는 두 가지 하위 컨트롤이 있습니다.
CC_ToolButtonSC_ToolButtonPE_PanelButtonTool(PM_DefaultFrameWidth)PE_FrameFocusRectCE_ToolButtonLabel(PM_ButtonShiftHorizontal,PM_ButtonShiftVertical)
SC_ToolButtonMenu(PM_MenuButtonIndicator)PE_IndicatorButtonDropDownPE_IndicatorArrowDown
instant 및 delayed 팝업의 경우 메뉴 하위 컨트롤이 없으므로, QCommonStyle 는 대신 버튼 사각형의 모서리에 PE_IndicatorArrowDown 를 그립니다. 크기 힌트는 CT_ToolButton 를 사용하며, 버튼은 SH_ToolButton_PopupDelay 및 SH_ToolButtonStyle 를 참조합니다. 툴바에 있는 도구 버튼은 툴바에서 아이콘 크기를 가져옵니다. 독립형 버튼은 PM_ButtonIconSize 를 사용합니다.

QToolButton 다음과 같은 상태 플래그를 설정합니다:
| 상태 | 다음 조건에서 설정됨 |
|---|---|
State_AutoRaise | autoRaise 속성이 설정된 경우. |
State_Raised | 버튼이 선택되지 않았거나 눌려 있지 않은 상태입니다. 이후 ` State_AutoRaise `가 설정되어 있고 마우스가 버튼 위에 있지 않으면 ` QCommonStyle `가 이 플래그를 다시 지웁니다. |
State_Sunken | 버튼이 눌리거나 해당 메뉴가 표시된 경우. |
State_On | 버튼이 선택 가능하고 선택된 상태일 때. |
QStyleOptionToolButton 의 다른 멤버는 다음과 같습니다.
| 멤버 | 설명 |
|---|---|
| arrowType | Qt::ArrowType 의 값으로, 아이콘이 있는 경우 아이콘 대신 그려지는 화살표의 방향을 지정합니다. |
| 기능 | QStyleOptionToolButton::ToolButtonFeature 열거형의 플래그: 버튼에 화살표가 표시되는지, 메뉴 버튼이 있는지, 또는 지연 팝업이 있는지 여부를 나타냅니다. |
| font | 버튼 레이블의 ` QFont `. |
| icon | 버튼의 QIcon. |
| iconSize | 아이콘의 크기입니다. |
| pos | QWidget::pos() 함수에 의해 지정된 버튼의 위치입니다. |
| text | 버튼의 텍스트입니다. |
| toolButtonStyle | 버튼에 아이콘, 텍스트 또는 둘 다 표시할지 여부를 결정하는 Qt::ToolButtonStyle 값입니다. |
콤보 박스
QComboBox CC_ComboBox 및 을 사용하여 버튼과 레이블을 그립니다. 두 요소 모두 을 사용합니다. 은 편집 가능한 상자의 경우 레이블 텍스트를 생략하며, 이 경우 자식이 텍스트를 그립니다. 팝업 목록은 CE_ComboBoxLabel QStyleOptionComboBox QCommonStyle QLineEdit 델리게이트가 그리는 항목 뷰이지만, 스타일은 를 통해 그 크기와 위치를 제어합니다. 편집 가능한 상자의 경우, 스타일은 를 통해 라인 편집 상자의 위치를 결정하며, 필드 자체는 자식 요소입니다. SC_ComboBoxListBoxPopup SC_ComboBoxEditField QLineEdit
CC_ComboBox(PM_ComboBoxFrameWidth)SC_ComboBoxFrameSC_ComboBoxArrow(PE_IndicatorArrowDown)SC_ComboBoxEditFieldSC_ComboBoxListBoxPopup, 팝업 위치 지정용
CE_ComboBoxLabel(SC_ComboBoxEditField)
크기 힌트에는 ` CT_ComboBox`가 사용됩니다. ` SH_ComboBox_Popup`, ` SH_ComboBox_PopupFrameStyle`, ` SH_ComboBox_UseNativePopup `와 같은 스타일 힌트는 팝업의 모양과 동작 방식을 결정합니다.

QComboBox 다음과 같은 상태 플래그를 설정합니다:
| 상태 | 다음 조건에서 설정됨 |
|---|---|
State_Selected | 상자가 편집 불가능한 상태이며 포커스가 있을 때. |
State_Sunken | SC_ComboBoxArrow 활성 상태일 때. |
State_On | 팝업 목록이 표시되어 있을 때. |
QStyleOptionComboBox 의 다른 구성원은 다음과 같습니다:
| 멤버 | 설명 |
|---|---|
| currentIcon | 현재 항목의 아이콘입니다. |
| currentText | 현재 항목의 텍스트입니다. |
| editable | 콤보 박스가 편집 가능한지 여부. |
| frame | 콤보 상자에 테두리가 있는지 여부입니다. |
| iconSize | 현재 항목의 아이콘 크기입니다. |
| popupRect | 팝업 목록의 경계 사각형입니다. |
| textAlignment | 라벨 내 텍스트의 정렬 방식입니다. |
스핀 박스
QSpinBox, QDoubleSpinBox 및 QDateTimeEdit 는 QStyleOptionSpinBox 를 사용하여 CC_SpinBox 를 그립니다. 편집 필드는 QLineEdit 의 자식 요소이며, 이 스타일은 SC_SpinBoxEditField 에 대해 해당 기하학적 정보를 반환합니다.
CC_SpinBox(PM_SpinBoxFrameWidth)SC_SpinBoxFrameSC_SpinBoxUpPE_PanelButtonBevelPE_IndicatorSpinUp또는PE_IndicatorSpinPlus, 다음 조건에 따라 buttonSymbols
SC_SpinBoxDownPE_PanelButtonBevelPE_IndicatorSpinDown또는PE_IndicatorSpinMinus
SC_SpinBoxEditField
스타일은 버튼 패널을 PE_PanelButtonBevel 로 그릴 필요가 없습니다. 크기 힌트는 CT_SpinBox 를 사용하며, 위젯은 SH_SpinBox_ButtonsInsideFrame, SH_SpinBox_StepModifier, SH_SpinControls_DisableOnBounds 와 같은 힌트를 참조합니다.

스핀 박스는 다음 상태 플래그를 설정합니다:
| 상태 | 다음 경우에 설정됨 |
|---|---|
State_Sunken | SC_SpinBoxUp 또는 SC_SpinBoxDown 하위 컨트롤이 눌렸을 때 설정됩니다. |
QStyleOptionSpinBox 의 다른 구성 요소는 다음과 같습니다:
| 구성 요소 | 설명 |
|---|---|
| frame | 스핀 박스에 테두리를 표시할지 여부. |
| buttonSymbols | 버튼의 기호(화살표, 더하기 및 빼기, 또는 없음)를 선택하는 ` QAbstractSpinBox::ButtonSymbols ` 값입니다. |
| stepEnabled | QAbstractSpinBox::StepEnabled 어떤 버튼으로 값을 단계별로 변경할 수 있는지 지정하는 플래그입니다. 값을 단계별로 변경할 수 없는 버튼은 비활성화된 상태로 표시됩니다. |
슬라이더
QSlider QStyleOptionSlider 를 사용하여 를 그립니다. 크기 힌트는 및 에서 계산하며, 최소 크기 힌트는 에서 계산합니다. CC_Slider PM_SliderThickness CT_Slider PM_SliderLength
CC_Slider(PM_SliderLength,PM_SliderControlThickness,PM_SliderTickmarkOffset,PM_SliderSpaceAvailable)SC_SliderGrooveSC_SliderHandleSC_SliderTickmarks
QCommonStyle 틱 표시만 그립니다. 홈과 핸들은 항상 스타일에 따라 다릅니다. 스타일은 SC_SliderTickmarks 에 대해 사각형을 반환할 필요가 없습니다. Fusion은 빈 사각형을 반환하고, 스크린샷에 표시된 영역인 핸들 아래에 틱을 그립니다. 위젯은 SH_Slider_AbsoluteSetButtons, SH_Slider_PageSetButtons 및 SH_Slider_SnapToValue 를 참조합니다.

QDial 동일한 옵션을 사용하며, SC_DialGroove, SC_DialHandle 및 SC_DialTickmarks 서브컨트롤을 사용하여 CC_Dial 를 그립니다.
QSlider 다음과 같은 상태 플래그를 설정합니다:
| 상태 | 다음 조건에서 설정됨 |
|---|---|
State_Horizontal | 슬라이더가 수평일 때. |
State_Sunken | 그루브를 포함하여 어떤 하위 컨트롤이든 눌려 있을 때. activeSubControls 가 어느 것인지를 알려줍니다. |
QStyleOptionSlider 모든 ` QAbstractSlider` 객체를 처리합니다. 이 객체의 멤버는 다음과 같습니다:
| 멤버 | 설명 |
|---|---|
| orientation | Qt::Orientation 값: vertical 또는 horizontal. |
| 최소 | 최소값. |
| 최대 | 최대값입니다. |
| tickPosition | 틱 표시가 그려지는 위치를 지정하는 QSlider::TickPosition 값입니다. |
| tickInterval | 슬라이더 값을 단위로 한 눈금 사이의 거리입니다. |
| upsideDown | 값이 증가하는 방향입니다. 모든 추상 슬라이더는 ` QStyleOption::direction` 대신 이 멤버를 사용합니다. |
| sliderPosition | 핸들의 위치를 슬라이더 값으로 나타낸 것입니다. ` tracking `가 활성화된 상태에서는 ` sliderValue `와 동일하며, 그렇지 않은 경우 핸들을 놓았을 때만 값이 업데이트됩니다. |
| sliderValue | 현재 값입니다. |
| singleStep | 화살표 키를 누르는 것과 같이 한 번의 단계에서 값이 변경되는 양입니다. |
| pageStep | 홈을 클릭하는 등 한 페이지 단위로 값이 변경되는 양입니다. |
| notchTarget | 노치 간의 권장 간격(픽셀 단위). ` QDial`에서 사용됩니다. |
| dialWrapping | 다이얼이 원형으로 반복되는지 여부. QDial 에서 사용됩니다. |
| keyboardModifiers | 수정 키가 드래그 동작을 변경할 수 있도록 허용하는 스타일의 경우, 마지막 마우스 이벤트 발생 시 누르고 있던 수정 키입니다. |
스크롤 막대
QScrollBar QStyleOptionSlider 를 사용하여 를 그립니다. 사용자가 슬라이더를 드래그하는 동안, 포인터가 바 바깥쪽으로 보다 더 멀리 이동하면 바가 값을 원래 위치로 되돌립니다. CC_ScrollBar PM_MaximumDragDistance
CC_ScrollBar(PM_ScrollBarExtent,PM_ScrollBarSliderMin)SC_ScrollBarGrooveSC_ScrollBarSubLine(CE_ScrollBarSubLine)SC_ScrollBarAddLine(CE_ScrollBarAddLine)SC_ScrollBarSubPage(CE_ScrollBarSubPage)SC_ScrollBarAddPage(CE_ScrollBarAddPage)SC_ScrollBarFirst(CE_ScrollBarFirst)SC_ScrollBarLast(CE_ScrollBarLast)SC_ScrollBarSlider(CE_ScrollBarSlider)PE_FrameFocusRect
QCommonStyle 동일한 이름의 컨트롤 요소를 사용하여 각 하위 컨트롤을 그립니다. 일부 스타일은 선 표시기를 PE_IndicatorArrowUp 및 기타 화살표 프리미티브로, 페이지 영역을 PE_PanelButtonBevel 로 그립니다. 이는 개별 스타일에 따라 다릅니다. SC_ScrollBarFirst 및 SC_ScrollBarLast 는 끝 부분으로 이동하는 선택적 버튼이며, 대부분의 스타일은 이에 대해 빈 사각형을 반환합니다. 크기 힌트는 CT_ScrollBar 를 사용하며, 동작 힌트에는 SH_ScrollBar_LeftClickAbsolutePosition, SH_ScrollBar_ContextMenu, SH_ScrollBar_Transient 가 포함됩니다.

QScrollBar 다음과 같은 상태 플래그를 설정합니다:
| 상태 | 다음 조건에서 설정됨 |
|---|---|
State_Horizontal | 스크롤 막대가 수평일 때. |
State_Sunken | 하위 컨트롤이 눌려 있고 포인터가 해당 컨트롤을 벗어나지 않은 경우. |
State_On | 스크롤 막대가 현재 표시된 일시적 스크롤 막대인 경우. |
QStyleOptionSlider 의 멤버는 슬라이더 항목에 나열되어 있습니다. sliderPosition, sliderValue, pageStep 및 upsideDown 는 핸들의 크기와 위치를 결정합니다.
진행률 표시줄
QProgressBar CE_ProgressBar 를 사용하여 를 가진 하나의 컨트롤 요소를 그립니다. 는 이를 홈, 내용, 레이블로 나눕니다: QStyleOptionProgressBar QCommonStyle
CE_ProgressBarCE_ProgressBarGroove(SE_ProgressBarGroove)CE_ProgressBarContents(SE_ProgressBarContents,PM_ProgressBarChunkWidth)CE_ProgressBarLabel(SE_ProgressBarLabel)
콘텐츠를 일련의 청크(chunk) 행으로 그리는 스타일은 ` PE_IndicatorProgressChunk`을 사용합니다. ` QCommonStyle `과 `Fusion`에서는 그루브, 콘텐츠, 레이블이 모두 전체 막대를 차지합니다. 레이블은 콘텐츠 위에 중앙 정렬된 텍스트로 표시되므로, 레이블을 구성하는 사각형은 별도의 영역이 아닙니다. 크기 힌트에는 CT_ProgressBar 가 사용됩니다. 최소값과 최대값이 모두 0인 바인 ‘바쁜 상태 표시기’는 해당 스타일에 의해 애니메이션 처리됩니다.

QProgressBar 이 상태 플래그를 설정합니다:
| 상태 | 다음과 같은 경우에 설정됩니다 |
|---|---|
State_Horizontal | 바가 수평일 때. |
QStyleOptionProgressBar 의 다른 멤버는 다음과 같습니다:
| 멤버 | 설명 |
|---|---|
| minimum | 최소값입니다. |
| 최대값 | 최대값입니다. |
| 진행률 | 현재 값. |
| text | 라벨 텍스트. |
| textAlignment | 레이블 내 텍스트의 정렬 방식입니다. |
| textVisible | 라벨을 표시할지 여부. |
| invertedAppearance | 막대가 반대쪽 끝에서 채워지는지 여부(예: 가로 막대의 경우 오른쪽에서 왼쪽으로 채워짐). |
| bottomToTop | 수직 막대의 레이블이 아래에서 위로 읽히도록 회전되는지 여부. |
‘위젯 스타일 참조’, ‘컨테이너 및 창 스타일 지정’ 및 ‘메뉴 및 항목 뷰 스타일 지정’도 참조하십시오 .
© 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.