이 페이지에서

버튼 및 입력 위젯 스타일 지정

이 페이지는 위젯 스타일 참조의 일부입니다. 요소 트리, 스크린샷 및 표에 대한 설명은 해당 페이지를 참조하십시오. 모든 위젯이 설정하는 일반적인 상태 플래그와 멤버는 '스타일이 위젯을 그리는 방법'에 나열되어 있습니다.

푸시 버튼

QPushButton 는 QStyleOptionButton 을 가진 단일 컨트롤 요소 CE_PushButton 를 그립니다. QCommonStyle 는 이를 베벨, 레이블, 포커스 프레임으로 나눕니다:

  • CE_PushButton
    • CE_PushButtonBevel (PM_ButtonDefaultIndicator, PM_MenuButtonIndicator)
      • PE_FrameDefaultButton, 기본 버튼의 경우
      • PE_PanelButtonCommand
      • PE_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_CheckBox
    • PE_IndicatorCheckBox (SE_CheckBoxIndicator, PM_IndicatorWidth, PM_IndicatorHeight)
    • CE_CheckBoxLabel (SE_CheckBoxContents, PM_CheckBoxLabelSpacing)
    • PE_FrameFocusRect (SE_CheckBoxFocusRect)
  • CE_RadioButton
    • PE_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_ToolButton
    • SC_ToolButton
      • PE_PanelButtonTool (PM_DefaultFrameWidth)
      • PE_FrameFocusRect
      • CE_ToolButtonLabel (PM_ButtonShiftHorizontal, PM_ButtonShiftVertical)
    • SC_ToolButtonMenu (PM_MenuButtonIndicator)
      • PE_IndicatorButtonDropDown
      • PE_IndicatorArrowDown

instant 및 delayed 팝업의 경우 메뉴 하위 컨트롤이 없으므로, QCommonStyle 는 대신 버튼 사각형의 모서리에 PE_IndicatorArrowDown 를 그립니다. 크기 힌트는 CT_ToolButton 를 사용하며, 버튼은 SH_ToolButton_PopupDelay 및 SH_ToolButtonStyle 를 참조합니다. 툴바에 있는 도구 버튼은 툴바에서 아이콘 크기를 가져옵니다. 독립형 버튼은 PM_ButtonIconSize 를 사용합니다.

아이콘, 텍스트 및 메뉴 표시기가 있는 도구 버튼으로, 버튼과 메뉴 하위 컨트롤에 윤곽선이 표시되어 있음

QToolButton 다음과 같은 상태 플래그를 설정합니다:

상태다음 조건에서 설정됨
State_AutoRaiseautoRaise 속성이 설정된 경우.
State_Raised버튼이 선택되지 않았거나 눌려 있지 않은 상태입니다. 이후 ` State_AutoRaise `가 설정되어 있고 마우스가 버튼 위에 있지 않으면 ` QCommonStyle `가 이 플래그를 다시 지웁니다.
State_Sunken버튼이 눌리거나 해당 메뉴가 표시된 경우.
State_On버튼이 선택 가능하고 선택된 상태일 때.

QStyleOptionToolButton 의 다른 멤버는 다음과 같습니다.

멤버설명
arrowTypeQt::ArrowType 의 값으로, 아이콘이 있는 경우 아이콘 대신 그려지는 화살표의 방향을 지정합니다.
기능QStyleOptionToolButton::ToolButtonFeature 열거형의 플래그: 버튼에 화살표가 표시되는지, 메뉴 버튼이 있는지, 또는 지연 팝업이 있는지 여부를 나타냅니다.
font버튼 레이블의 ` QFont `.
icon버튼의 QIcon.
iconSize아이콘의 크기입니다.
posQWidget::pos() 함수에 의해 지정된 버튼의 위치입니다.
text버튼의 텍스트입니다.
toolButtonStyle버튼에 아이콘, 텍스트 또는 둘 다 표시할지 여부를 결정하는 Qt::ToolButtonStyle 값입니다.

콤보 박스

QComboBox CC_ComboBox 및 을 사용하여 버튼과 레이블을 그립니다. 두 요소 모두 을 사용합니다. 은 편집 가능한 상자의 경우 레이블 텍스트를 생략하며, 이 경우 자식이 텍스트를 그립니다. 팝업 목록은 CE_ComboBoxLabel QStyleOptionComboBox QCommonStyle QLineEdit 델리게이트가 그리는 항목 뷰이지만, 스타일은 를 통해 그 크기와 위치를 제어합니다. 편집 가능한 상자의 경우, 스타일은 를 통해 라인 편집 상자의 위치를 결정하며, 필드 자체는 자식 요소입니다. SC_ComboBoxListBoxPopup SC_ComboBoxEditField QLineEdit

  • CC_ComboBox (PM_ComboBoxFrameWidth)
    • SC_ComboBoxFrame
    • SC_ComboBoxArrow (PE_IndicatorArrowDown)
    • SC_ComboBoxEditField
    • SC_ComboBoxListBoxPopup, 팝업 위치 지정용
  • CE_ComboBoxLabel (SC_ComboBoxEditField)

크기 힌트에는 ` CT_ComboBox`가 사용됩니다. ` SH_ComboBox_Popup`, ` SH_ComboBox_PopupFrameStyle`, ` SH_ComboBox_UseNativePopup `와 같은 스타일 힌트는 팝업의 모양과 동작 방식을 결정합니다.

테두리가 표시된 콤보 박스와 그 안의 편집 필드 및 화살표 하위 컨트롤

QComboBox 다음과 같은 상태 플래그를 설정합니다:

상태다음 조건에서 설정됨
State_Selected상자가 편집 불가능한 상태이며 포커스가 있을 때.
State_SunkenSC_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_SpinBoxFrame
    • SC_SpinBoxUp
      • PE_PanelButtonBevel
      • PE_IndicatorSpinUp 또는 PE_IndicatorSpinPlus, 다음 조건에 따라 buttonSymbols
    • SC_SpinBoxDown
      • PE_PanelButtonBevel
      • PE_IndicatorSpinDown 또는 PE_IndicatorSpinMinus
    • SC_SpinBoxEditField

스타일은 버튼 패널을 PE_PanelButtonBevel 로 그릴 필요가 없습니다. 크기 힌트는 CT_SpinBox 를 사용하며, 위젯은 SH_SpinBox_ButtonsInsideFrame, SH_SpinBox_StepModifier, SH_SpinControls_DisableOnBounds 와 같은 힌트를 참조합니다.

테두리가 표시된 스핀 박스와 프레임, 편집 필드, 위쪽 버튼, 아래쪽 버튼 등의 하위 컨트롤

스핀 박스는 다음 상태 플래그를 설정합니다:

상태다음 경우에 설정됨
State_SunkenSC_SpinBoxUp 또는 SC_SpinBoxDown 하위 컨트롤이 눌렸을 때 설정됩니다.

QStyleOptionSpinBox 의 다른 구성 요소는 다음과 같습니다:

구성 요소설명
frame스핀 박스에 테두리를 표시할지 여부.
buttonSymbols버튼의 기호(화살표, 더하기 및 빼기, 또는 없음)를 선택하는 ` QAbstractSpinBox::ButtonSymbols ` 값입니다.
stepEnabledQAbstractSpinBox::StepEnabled 어떤 버튼으로 값을 단계별로 변경할 수 있는지 지정하는 플래그입니다. 값을 단계별로 변경할 수 없는 버튼은 비활성화된 상태로 표시됩니다.

슬라이더

QSlider QStyleOptionSlider 를 사용하여 를 그립니다. 크기 힌트는 및 에서 계산하며, 최소 크기 힌트는 에서 계산합니다. CC_Slider PM_SliderThickness CT_Slider PM_SliderLength

  • CC_Slider (PM_SliderLength, PM_SliderControlThickness, PM_SliderTickmarkOffset, PM_SliderSpaceAvailable)
    • SC_SliderGroove
    • SC_SliderHandle
    • SC_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` 객체를 처리합니다. 이 객체의 멤버는 다음과 같습니다:

멤버설명
orientationQt::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_ScrollBarGroove
    • SC_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_ProgressBar
    • CE_ProgressBarGroove (SE_ProgressBarGroove)
    • CE_ProgressBarContents (SE_ProgressBarContents, PM_ProgressBarChunkWidth)
    • CE_ProgressBarLabel (SE_ProgressBarLabel)

콘텐츠를 일련의 청크(chunk) 행으로 그리는 스타일은 ` PE_IndicatorProgressChunk`을 사용합니다. ` QCommonStyle `과 `Fusion`에서는 그루브, 콘텐츠, 레이블이 모두 전체 막대를 차지합니다. 레이블은 콘텐츠 위에 중앙 정렬된 텍스트로 표시되므로, 레이블을 구성하는 사각형은 별도의 영역이 아닙니다. 크기 힌트에는 CT_ProgressBar 가 사용됩니다. 최소값과 최대값이 모두 0인 바인 ‘바쁜 상태 표시기’는 해당 스타일에 의해 애니메이션 처리됩니다.

진행률 표시줄이 40%에 도달했으며, 그루브, 내용물 및 라벨의 윤곽선이 표시되어 있습니다.

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.