메뉴 및 항목 뷰 스타일 지정
이 페이지는 위젯 스타일 참조 문서의 일부입니다. 요소 트리, 스크린샷 및 표에 대한 설명은 해당 페이지를 참조하십시오. 모든 위젯이 설정하는 공통 상태 플래그 및 멤버는 ‘스타일이 위젯을 그리는 방법’에 나열되어 있습니다.
메뉴
QMenu 는 작업 목록을 유지하며 각 작업을 메뉴 항목으로 그립니다. 페인트 이벤트가 발생하면 메뉴 패널을 먼저 그리고, 그 다음 ‘ CE_MenuItem ’와 ‘ QStyleOptionMenuItem ’을 사용하여 각 항목을 그리며, 마지막으로 프레임을 그립니다. 메뉴 항목에는 별도의 레이블 요소가 없으므로, ‘ CE_MenuItem ’가 체크 표시, 아이콘, 텍스트, 단축키 및 하위 메뉴 화살표를 그립니다.
PE_PanelMenu, 배경CE_MenuItem는 선택된 항목의 경우 각 동작(`PM_SmallIconSize`)마다 한 번씩PE_IndicatorMenuCheckMark, 선택된 항목에 대해 적용됩니다. 많은 스타일에서는 대신PE_IndicatorCheckBox및PE_IndicatorRadioButton을 사용합니다.PE_IndicatorArrowRight또는PE_IndicatorArrowLeft, 하위 메뉴를 여는 항목의 경우
CE_MenuScroller(PM_MenuScrollerHeight), 메뉴가 화면보다 너무 길어SH_Menu_Scrollable가 설정된 경우CE_MenuTearoff(PM_MenuTearoffHeight), tear-off 메뉴의 경우PE_FrameMenuQStyleOptionFrame ( )의 경우, 항목이나 프레임으로 채워지지 않은 공간에 대해 가PM_MenuPanelWidthlineWidthPM_MenuPanelWidthCE_MenuEmptyArea인 xml-ph-0001@deepl.internal을 가진 프레임의 경우, 항목이나 프레임으로 덮이지 않은 공간에 대해
QMenu 는 ` PM_MenuHMargin`, ` PM_MenuVMargin`, ` PM_MenuPanelWidth` 및 ` PM_MenuDesktopFrameWidth`를 사용하여 항목을 직접 배치합니다. 또한 ` SH_Menu_SubMenuPopupDelay`, ` SH_Menu_MouseTracking` 및 ` SH_Menu_Mask`과 같은 다양한 ` SH_Menu_ ` 힌트도 참조합니다.

QMenu initFrom()를 호출한 후 상태를 초기화하므로, 항목에는 , 및 다음 표에 나열된 플래그만 포함됩니다: State_Enabled State_Active
| 상태 | 다음 조건에서 설정됨 |
|---|---|
State_Selected | 항목이 강조 표시되어 있고 구분선이 아닐 때. |
State_Sunken | 항목이 눌려진 상태입니다. |
State_DownArrow | 항목이 메뉴를 아래로 스크롤하는 스크롤러인 경우. |
State_Enabled | 작업이 활성화된 경우. 비활성화된 작업은 메뉴가 활성화된 상태라 하더라도 이 플래그를 지웁니다. |
QStyleOptionMenuItem 의 구성원은 다음과 같습니다:
| 멤버 | 설명 |
|---|---|
| menuItemType | MenuItemType 의 값: 일반 항목, 기본 항목, 구분선, 하위 메뉴, 스크롤러, 분리 가능 항목, 여백 또는 빈 영역. |
| checkType | CheckType 값: 선택 불가, 배타적 또는 비배타적. |
| checked | 항목이 선택되어 있는지 여부. |
| menuHasCheckableItems | 메뉴에 선택 가능한 항목이 하나 이상 있는지 여부. 이 경우 스타일에서 체크 표시를 위한 공간을 확보할 수 있습니다. |
| menuRect | 전체 메뉴를 나타내는 사각형입니다. |
| text | 항목 텍스트입니다. 텍스트와 단축키는 탭 문자로 구분됩니다. |
| icon | 항목 아이콘. |
| maxIconWidth | 메뉴에서 가장 넓은 아이콘의 너비입니다. |
| reservedShortcutWidth | 바로 가기 열을 위해 할당된 너비입니다. |
| font | 항목 텍스트의 글꼴입니다. |
CE_MenuScroller 및 CE_MenuTearoff 의 경우, 메뉴는 menuItemType, checkType, maxIconWidth 및 reservedShortcutWidth 만 설정합니다. CE_MenuEmptyArea 는 menuRect 도 설정합니다.
메뉴 바
QMenuBar 각 메뉴 제목은 ` CE_MenuBarItem `와 ` QStyleOptionMenuItemV2`을 사용하여 그리며, 마지막 제목 뒤의 공백은 ` CE_MenuBarEmptyArea`을, 패널은 ` PE_PanelMenuBar `와 ` QStyleOptionFrame`을 사용하여 그립니다. 드롭다운 메뉴는 ` QMenu`입니다. ‘메뉴’ 항목을 참조하십시오.
CE_MenuBarItem, 메뉴당 한 번씩 (PM_SmallIconSize)PE_PanelMenuBar(PM_MenuBarPanelWidth)CE_MenuBarEmptyArea
메뉴 바는 PM_MenuBarItemSpacing, PM_MenuBarHMargin 및 PM_MenuBarVMargin 을 사용하여 항목을 배치하고, CT_MenuBarItem 을 사용하여 크기를 조정합니다. QMenuBar 가 패널에 전달하는 페인터는 각각 PM_MenuBarPanelWidth 너비의 네 개의 테두리 스트립으로 클리핑되므로, 패널은 테두리만 그릴 수 있습니다. 빈 영역에 대한 페인터는 항목과 테두리가 남긴 공간으로 클리핑됩니다. 이 바는 SH_MenuBar_MouseTracking, SH_MenuBar_AltKeyNavigation 및 SH_DrawMenuBarSeparator 을 참조합니다.
macOS에서 QMenuBar 는 기본적으로 네이티브 메뉴 바를 사용하며 별도로 그리는 내용은 없습니다. QMenuBar::setNativeMenuBar()를 호출하여 해당 스타일을 적용하도록 하십시오.

QMenuBar initFrom()를 호출하는 대신 옵션 자체를 채웁니다. 메뉴 바가 활성화되면 를 설정하고, 항목에는 다음과 같은 플래그를 적용합니다: State_Enabled
| 상태 | 다음 조건에서 설정됨 |
|---|---|
State_Selected | 항목이 강조 표시되었을 때. |
State_Sunken | 항목의 메뉴가 열려 있을 때. |
State_HasFocus | 메뉴 바에 포커스가 있거나 현재 선택된 항목이 있을 때. |
State_MouseOver | 마우스가 항목 위에 있을 때. |
메뉴 바는 ` QStyleOptionMenuItem`의 다음 구성원을 사용합니다:
| 멤버 | 설명 |
|---|---|
| menuRect | 전체 메뉴 바를 구성하는 사각형입니다. |
| text | 메뉴의 제목입니다. |
| icon | 메뉴의 아이콘입니다. 이를 표시하는 스타일은 거의 없습니다. |
패널의 경우, ` QStyleOptionFrame::lineWidth `는 ` PM_MenuBarPanelWidth `로, ` midLineWidth `는 0으로 설정됩니다.
항목 보기 헤더
QHeaderView 각 헤더 섹션을 ` CE_Header `와 ` QStyleOptionHeaderV2`을 사용하여 그립니다. ` QCommonStyle `은 이를 섹션 배경, 레이블, 정렬 표시기로 나눕니다:
CE_Header, 섹션당 한 번씩 (PM_HeaderMargin)CE_HeaderSectionCE_HeaderLabel(SE_HeaderLabel)PE_IndicatorHeaderArrow(SE_HeaderArrow,PM_HeaderMarkSize), 정렬된 섹션의 경우
CE_HeaderEmptyArea, 마지막 섹션 뒤의 공간에 대해
헤더 뷰는 CT_HeaderSection 를 사용하여 섹션의 크기를 조정하고, 사용자가 섹션 경계를 드래그할 수 있는 영역에는 PM_HeaderGripMargin 를 사용합니다. QTableView 는 두 헤더가 만나는 왼쪽 상단 모서리에 CE_Header 형태의 버튼을 그립니다. 힌트 SH_Header_ArrowAlignment 는 정렬 표시기를 배치합니다.

헤더는 섹션에 다음과 같은 상태 플래그를 설정합니다:
| 상태 | 설정 시점 |
|---|---|
State_Raised | 항상. 헤더는 모든 섹션에 대해 이를 설정합니다. |
State_Horizontal | 이는 뷰 상단에 위치한 가로 헤더입니다. |
State_Sunken | 섹션이 눌렸거나, 섹션이 선택된 상태에서 ‘ highlightSections ’가 켜져 있을 때. |
State_On | 섹션 내의 항목이 선택되어 있고 ' highlightSections '가 켜져 있을 때. |
State_MouseOver | 마우스가 섹션 위에 위치해 있을 때. ' sectionsClickable '이 켜져 있을 때만 설정됩니다. |
QStyleOptionHeader 의 구성원은 다음과 같습니다:
| 멤버 | 설명 |
|---|---|
| section | 섹션의 논리적 인덱스입니다. |
| text | 섹션 텍스트. |
| textAlignment | 섹션 내 텍스트의 정렬 방식입니다. |
| icon | 섹션 아이콘. |
| iconAlignment | 섹션 내 아이콘의 정렬 방식. |
| position | SectionPosition 값: 다른 섹션에 대한 해당 섹션의 상대적 위치. |
| selectedPosition | SelectedPosition 값: 선택된 섹션이 이 섹션에 대해 갖는 위치입니다. |
| 정렬 표시기 | SortIndicator 값: 표시기 없음 또는 정렬 화살표의 방향. |
| orientation | 이 요소가 뷰 상단의 가로 헤더인지, 아니면 옆의 세로 헤더인지 여부입니다. |
QStyleOptionHeaderV2 textElideMode, 즉 들어가지 않는 텍스트에 대한 생략 모드와, 드래그된 섹션이 놓일 섹션에 설정되는 를 추가합니다. isSectionDragTarget
트리 분기 표시기
QTreeView PE_IndicatorBranch 를 사용하여 노드 간의 관계를 나타내는 선과 화살표인 분기 표시기를 그립니다. 각 항목 앞의 들여쓰기 수준마다 하나의 표시기를 그리므로, 깊게 중첩된 항목에는 여러 개의 표시기가 나타납니다. 또한 트리는 를 사용하여 각 행의 배경을 그리며, 를 사용하여 수준별로 들여쓰기를 적용합니다. PE_PanelItemViewRow PM_TreeViewIndentation
두 요소 모두 ` QStyleOptionViewItem`를 지원하므로, 스타일은 행의 팔레트, 글꼴 및 교대 행(alternate-row) 기능 플래그를 읽을 수도 있습니다. 분기 유형은 상태 플래그에 인코딩되어 있습니다:
| 상태 | 설정 시점 |
|---|---|
State_Item | 이 표시기는 상위 요소가 아닌 이 행의 항목에 속합니다. 여기에 수평 연결선을 그립니다. |
State_Children | 항목에 자식 항목이 있으므로, 표시기에 확장 또는 축소 화살표가 나타납니다. |
State_Open | 항목이 확장된 상태입니다. |
State_Sibling | 이 레벨의 노드 아래에 형제 노드가 있으므로 수직선이 아래쪽으로 이어집니다. |
아래에 형제 노드가 없는 레벨의 노드에는 이러한 표시가 전혀 없는 표시기가 그려지며, 이 스타일에서는 해당 위치에 아무것도 표시하지 않습니다.

항목 뷰 항목
델리게이트는 항목 뷰 내의 항목을 그립니다. Qt의 기본 델리게이트인 QStyledItemDelegate 는 QStyleOptionViewItem 를 사용하여 CE_ItemViewItem 를 그리고, CT_ItemViewItem 를 통해 항목 크기를 계산하므로, 델리게이트가 동반되지 않은 경우 스타일로 항목의 모양을 제어할 수 있습니다. QCommonStyle 는 요소를 배경, 체크 표시기, 장식, 텍스트 및 포커스 프레임으로 분할합니다:
CE_ItemViewItemPE_PanelItemViewItemPE_IndicatorItemViewItemCheck(SE_ItemViewItemCheckIndicator)- paint()을 사용하여 그려지는 장식 요소 (
SE_ItemViewItemDecoration) - QCommonStyle 를 통해 생략 및 줄 바꿈 처리를 적용하여 레이아웃을 구성하고 그려진 텍스트 (
SE_ItemViewItemText) PE_FrameFocusRect(SE_ItemViewItemFocusRect)
뷰는 SH_ItemView_ShowDecorationSelected, SH_ItemView_ActivateItemOnSingleClick, SH_ItemView_ArrowKeysNavigateIntoChildren 과 같은 항목 뷰 힌트를 참조합니다. QStyledItemDelegate 가 처리하지 않는 데이터 유형이나 역할을 지원하려면 사용자 정의 델리게이트를 작성하십시오. 자세한 내용은 모델/뷰 프로그래밍을 참조하십시오.
QStyleOptionViewItem 의 상태 플래그와 멤버에 대한 설명은 해당 클래스 문서에 나와 있습니다. 그중 가장 중요한 것은 State_Selected, State_HasFocus, checkState, decorationPosition, displayAlignment, features, icon, text, viewItemPosition 입니다.
‘위젯 스타일 참조’, ‘버튼 및 입력 위젯 스타일지정’, ‘컨테이너 및 창 스타일 지정’, 그리고 ‘ QStyledItemDelegate ’항목도 참조하십시오 .
© 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.