이 페이지에서

메뉴 및 항목 뷰 스타일 지정

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

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_FrameMenu QStyleOptionFrame ( )의 경우, 항목이나 프레임으로 채워지지 않은 공간에 대해 가PM_MenuPanelWidth lineWidth PM_MenuPanelWidth
  • CE_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 의 구성원은 다음과 같습니다:

멤버설명
menuItemTypeMenuItemType 의 값: 일반 항목, 기본 항목, 구분선, 하위 메뉴, 스크롤러, 분리 가능 항목, 여백 또는 빈 영역.
checkTypeCheckType 값: 선택 불가, 배타적 또는 비배타적.
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_HeaderSection
    • CE_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섹션 내 아이콘의 정렬 방식.
positionSectionPosition 값: 다른 섹션에 대한 해당 섹션의 상대적 위치.
selectedPositionSelectedPosition 값: 선택된 섹션이 이 섹션에 대해 갖는 위치입니다.
정렬 표시기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_ItemViewItem
    • PE_PanelItemViewItem
    • PE_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.