このページでは

メニューおよびアイテムビューのスタイル設定

このページは「ウィジェット・スタイル・リファレンス」の一部です。要素ツリー、スクリーンショット、および表に関する説明については、当該ページを参照してください。すべてのウィジェットが設定する共通の状態フラグおよびメンバについては、「スタイルによるウィジェットの描画方法」に一覧が記載されています。

QMenu はアクションのリストを保持し、それぞれをメニュー項目として描画します。ペイントイベントが発生すると、まずメニューのパネルを描画し、次にCE_MenuItem とQStyleOptionMenuItem を使用して各項目を描画し、最後にフレームを描画します。メニュー項目には独立したラベル要素がないため、CE_MenuItem がチェックマーク、アイコン、テキスト、ショートカット、およびサブメニューの矢印を描画します。

  • PE_PanelMenu、背景
  • CE_MenuItemは、アクション(PM_SmallIconSize )ごとに1回描画されます
    • 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 (PM_MenuPanelWidth)、アイテムやフレームで覆われていない領域には、QStyleOptionFrame のlineWidth がPM_MenuPanelWidth
  • CE_MenuEmptyAreaであるxml-ph-0001@deepl.internalを持つメニュー( xml-ph-0000@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メニュー内の少なくとも1つの項目がチェック可能かどうか。チェック可能であれば、スタイルはチェックマーク用のスペースを確保できます。
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、メニューごとに1回(PM_SmallIconSize )
  • PE_PanelMenuBar (PM_MenuBarPanelWidth)
  • CE_MenuBarEmptyArea

メニューバーは、PM_MenuBarItemSpacing 、PM_MenuBarHMargin 、およびPM_MenuBarVMargin を使用して項目を配置し、CT_MenuBarItem でサイズを調整します。QMenuBar がパネルに渡しするペインターは、それぞれPM_MenuBarPanelWidth の幅を持つ4つの境界ストリップにクリップされるため、パネルは境界線のみを描画できます。空いている領域のペインターは、項目と境界線が残した領域にクリップされます。バーは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、セクションごとに1回(PM_HeaderMargin )
    • CE_HeaderSection
    • CE_HeaderLabel (SE_HeaderLabel)
    • PE_IndicatorHeaderArrow (SE_HeaderArrow,PM_HeaderMarkSize)、ソート済みのセクションについては
  • CE_HeaderEmptyArea、最後のセクションの後のスペースに対して

ヘッダービューは、CT_HeaderSection を使用してセクションのサイズを決定し、ユーザーがセクションの境界をドラッグできる領域にはPM_HeaderGripMargin を使用します。QTableView は、2つのヘッダーが交わる左上隅に、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 の値:選択されたセクションの、このセクションに対する位置。
sortIndicatorSortIndicator の値:インジケーターなし、またはソート矢印の方向。
orientationこれがビューの上にある水平ヘッダーか、その横にある垂直ヘッダーかを指定します。

QStyleOptionHeaderV2 textElideMode (テキストが収まらない場合の省略モード)と、 (ドラッグされたセクションがドロップされようとしているセクションに設定される)が追加されます。isSectionDragTarget

ツリーブランチインジケータ

QTreeView PE_IndicatorBranch を使用して、ノード間の関係を示す線や矢印であるブランチインジケータを描画します。各項目の前に、インデントレベルごとに 1 つのインジケータが描画されるため、深くネストされた項目には複数のインジケータが表示されます。また、ツリーは を使用して各行の背景を描画し、 を使用してレベルごとにインデントを付けます。PE_PanelItemViewRow PM_TreeViewIndentation

どちらの要素もQStyleOptionViewItem を受け取るため、スタイルでは行のパレット、フォント、および交互行の機能フラグを読み取ることも可能です。分岐の種類は状態フラグにエンコードされています:

状態設定される条件
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.