Gestaltung von Menüs und Elementansichten
Diese Seite ist Teil der Widget-Stilreferenz. Eine Erläuterung der Elementbäume, Screenshots und Tabellen finden Sie auf dieser Seite. Die allgemeinen Statusflags und Mitglieder, die jedes Widget setzt, sind unter „So zeichnet ein Stil ein Widget“ aufgeführt.
Menüs
QMenu verwaltet eine Liste von Aktionen und zeichnet jede davon als Menüelement. Bei einem „Paint“-Ereignis zeichnet es zunächst den Menübereich, dann jedes Element mit „ CE_MenuItem “ und „ QStyleOptionMenuItem “ und zuletzt den Rahmen. Menüelemente haben kein separates Beschriftungselement, daher zeichnet „ CE_MenuItem “ das Häkchen, das Symbol, den Text, die Tastenkombination und den Untermenü-Pfeil.
PE_PanelMenu, der HintergrundCE_MenuItem, einmal pro Aktion (PM_SmallIconSize)PE_IndicatorMenuCheckMark, bei einem markierten Element. Viele Stile verwenden stattdessen „PE_IndicatorCheckBox“ und „PE_IndicatorRadioButton“.PE_IndicatorArrowRightoder „PE_IndicatorArrowLeft“ für ein Element, das ein Untermenü öffnet
CE_MenuScroller(PM_MenuScrollerHeight), wenn das Menü zu hoch für den Bildschirm ist undSH_Menu_Scrollablegesetzt istCE_MenuTearoff(PM_MenuTearoffHeight), für ein „ tear-off “-MenüPE_FrameMenu(PM_MenuPanelWidth), den Rahmen mit einem „ QStyleOptionFrame “, dessen „lineWidth“PM_MenuPanelWidthCE_MenuEmptyArea, für den Bereich, der nicht von Elementen oder dem Rahmen eingenommen wird
QMenu ordnet die Elemente selbst an, unter Verwendung von PM_MenuHMargin, PM_MenuVMargin, PM_MenuPanelWidth und PM_MenuDesktopFrameWidth. Außerdem berücksichtigt er zahlreiche SH_Menu_ -Hinweise, wie beispielsweise SH_Menu_SubMenuPopupDelay, SH_Menu_MouseTracking und SH_Menu_Mask.

QMenu setzt den Zustand nach dem Aufruf von ` initFrom()` zurück, sodass die Elemente nur ` State_Enabled`, ` State_Active` und die in dieser Tabelle aufgeführten Flags enthalten:
| Zustand | Wird gesetzt, wenn |
|---|---|
State_Selected | Das Element ist hervorgehoben und kein Trennzeichen. |
State_Sunken | Das Element ist gedrückt. |
State_DownArrow | Das Element ist ein Scrollbalken, der das Menü nach unten scrollt. |
State_Enabled | Die Aktion ist aktiviert. Deaktivierte Aktionen löschen dieses Flag, selbst wenn das Menü aktiviert ist. |
Die Elemente von „ QStyleOptionMenuItem “ sind:
| Element | Beschreibung |
|---|---|
| menuItemType | Ein Wert aus „ MenuItemType “: ein normales Menüelement, das Standardelement, ein Trennzeichen, ein Untermenü, ein Scroller, ein abtrennbares Element, ein Rand oder ein leerer Bereich. |
| checkType | Ein Wert aus „ CheckType “: nicht ankreuzbar, exklusiv oder nicht exklusiv. |
| checked | Gibt an, ob das Element markiert ist. |
| menuHasCheckableItems | Gibt an, ob mindestens ein Element im Menü markierbar ist, sodass der Stil Platz für Häkchen reservieren kann. |
| menuRect | Das Rechteck des gesamten Menüs. |
| text | Der Text des Menüpunkts. Ein Tabulatorzeichen trennt den Text von der Tastenkombination. |
| icon | Das Symbol des Menüpunkts. |
| maxIconWidth | Die Breite des breitesten Symbols im Menü. |
| reservedShortcutWidth | Die für die Verknüpfungsspalte reservierte Breite. |
| font | Die Schriftart des Elementtextes. |
Bei „ CE_MenuScroller “ und „ CE_MenuTearoff “ legt das Menü nur „ menuItemType “, „ checkType “, „ maxIconWidth “ und „ reservedShortcutWidth “ fest. „ CE_MenuEmptyArea “ legt außerdem „ menuRect “ fest.
Menüleisten
QMenuBar zeichnet jeden Menütitel mit „ CE_MenuBarItem “ und einem „ QStyleOptionMenuItemV2 “, den Abstand nach dem letzten Titel mit „ CE_MenuBarEmptyArea “ und das entsprechende Feld mit „ PE_PanelMenuBar “ und einem „ QStyleOptionFrame “. Die Dropdown-Menüs sind „ QMenus“; siehe „Menüs“.
CE_MenuBarItem, einmal pro Menü (PM_SmallIconSize)PE_PanelMenuBar(PM_MenuBarPanelWidth)CE_MenuBarEmptyArea
Die Menüleiste ordnet die Elemente mit „ PM_MenuBarItemSpacing “, „ PM_MenuBarHMargin “ und „ PM_MenuBarVMargin “ an und passt ihre Größe mit „ CT_MenuBarItem “ an. Der „Painter“, den „ QMenuBar “ für das Panel übergibt, wird auf die vier Randstreifen mit einer Breite von jeweils „ PM_MenuBarPanelWidth “ beschnitten, sodass das Panel nur den Rand zeichnen kann. Der „Painter“ für den leeren Bereich wird auf den verbleibenden Platz nach Abzug der Elemente und des Randes beschnitten. Die Leiste greift auf „ SH_MenuBar_MouseTracking “, „ SH_MenuBar_AltKeyNavigation “ und „ SH_DrawMenuBarSeparator “ zurück.
Unter macOS verwendet „ QMenuBar “ standardmäßig die native Menüleiste und zeichnet nichts. Rufen Sie „ QMenuBar::setNativeMenuBar()“ auf, damit der Stil verwendet wird.

QMenuBar füllt die Option selbst aus, anstatt initFrom() aufzurufen. Es setzt State_Enabled, wenn die Leiste aktiviert ist, und folgende Flags für die Elemente:
| Status | Wird gesetzt, wenn |
|---|---|
State_Selected | Das Menüelement ist markiert. |
State_Sunken | Das Menü des Elements ist geöffnet. |
State_HasFocus | Die Menüleiste hat den Fokus oder enthält ein aktuelles Element. |
State_MouseOver | sich der Mauszeiger über dem Element befindet. |
Die Menüleiste verwendet folgende Elemente von „ QStyleOptionMenuItem “:
| Element | Beschreibung |
|---|---|
| menuRect | Das Rechteck der gesamten Menüleiste. |
| text | Der Titel des Menüs. |
| icon | Das Symbol des Menüs. Nur wenige Stile zeichnen es. |
Für das Panel ist „ QStyleOptionFrame::lineWidth “ auf „ PM_MenuBarPanelWidth “ und „ midLineWidth “ auf 0 gesetzt.
Kopfzeilen der Elementansicht
QHeaderView zeichnet jeden Kopfzeilenabschnitt mit „ CE_Header “ und „ QStyleOptionHeaderV2 “. „ QCommonStyle “ unterteilt ihn in den Abschnitts-Hintergrund, die Beschriftung und den Sortierindikator:
CE_Header, einmal pro Abschnitt (PM_HeaderMargin)CE_HeaderSectionCE_HeaderLabel(SE_HeaderLabel)PE_IndicatorHeaderArrow(SE_HeaderArrow,PM_HeaderMarkSize), für den sortierten Abschnitt
CE_HeaderEmptyArea, für den Abstand nach dem letzten Abschnitt
Die Header-Ansicht passt die Größe ihrer Abschnitte mit ` CT_HeaderSection ` an und verwendet ` PM_HeaderGripMargin ` für den Bereich, in dem der Benutzer eine Abschnittsgrenze verschieben kann. ` QTableView ` zeichnet die Schaltfläche in der oberen linken Ecke, wo sich die beiden Header treffen, als ` CE_Header`. Der Hinweis ` SH_Header_ArrowAlignment ` platziert den Sortierindikator.

Die Kopfzeile setzt diese Statusflags für einen Abschnitt:
| Status | Gesetzt, wenn |
|---|---|
State_Raised | Immer. Die Kopfzeile setzt ihn für jeden Abschnitt. |
State_Horizontal | Dies ist die horizontale Kopfzeile oberhalb der Ansicht. |
State_Sunken | Der Abschnitt wird gedrückt oder der Abschnitt ist ausgewählt und „ highlightSections “ ist aktiviert. |
State_On | Ein Element im Abschnitt ist ausgewählt und „ highlightSections “ ist aktiviert. |
State_MouseOver | Die Maus befindet sich über dem Abschnitt. Wird nur gesetzt, wenn „ sectionsClickable “ aktiviert ist. |
Die Elemente von „ QStyleOptionHeader “ sind:
| Element | Beschreibung |
|---|---|
| section | Der logische Index des Abschnitts. |
| text | Der Text des Abschnitts. |
| textAlignment | Die Ausrichtung des Textes im Abschnitt. |
| Symbol | Das Symbol des Abschnitts. |
| iconAlignment | Die Ausrichtung des Symbols im Abschnitt. |
| position | Ein Wert vom Typ „ SectionPosition “: Die Position des Abschnitts relativ zu den anderen Abschnitten. |
| selectedPosition | Ein Wert vom Typ „ SelectedPosition “: Die Position des ausgewählten Abschnitts relativ zu diesem Abschnitt. |
| sortIndicator | Ein Wert vom Typ „ SortIndicator “: kein Indikator oder die Richtung des Sortierpfeils. |
| orientation | Gibt an, ob es sich um die horizontale Kopfzeile oberhalb der Ansicht oder um die vertikale Kopfzeile daneben handelt. |
QStyleOptionHeaderV2 „adds“ textElideMode, der Elidierungsmodus für Text, der nicht passt, und „ isSectionDragTarget “, der für den Abschnitt festgelegt wird, auf den ein gezogener Abschnitt abgelegt werden soll.
Anzeigen für Baumzweige
QTreeView Zeichnet die Zweigindikatoren – die Linien und Pfeile, die die Beziehung zwischen den Knoten anzeigen – mit ` PE_IndicatorBranch`. Pro Einrückungsebene wird vor jedem Element ein Indikator gezeichnet, sodass ein tief verschachteltes Element mehrere aufweist. Der Baum zeichnet außerdem den Hintergrund jeder Zeile mit ` PE_PanelItemViewRow ` und rückt die Ebenen mit ` PM_TreeViewIndentation` ein.
Beide Elemente nehmen einen „ QStyleOptionViewItem “ entgegen, sodass ein Stil auch die Palette, die Schriftart und das Feature-Flag für abwechselnde Zeilen der Zeile auslesen kann. Die Art des Zweigs wird in den Status-Flags kodiert:
| Status | Wird gesetzt, wenn |
|---|---|
State_Item | Der Indikator gehört zum Element in dieser Zeile und nicht zu einem übergeordneten Element. Zeichnen Sie hier die horizontale Verbindungslinie. |
State_Children | Das Element hat untergeordnete Elemente, daher zeigt der Indikator einen Pfeil zum Erweitern oder Reduzieren an. |
State_Open | Das Element ist erweitert. |
State_Sibling | Der Knoten auf dieser Ebene hat ein untergeordnetes Element, daher verläuft eine vertikale Linie nach unten. |
Für eine Ebene, deren Knoten kein untergeordnetes Element hat, wird ein Indikator ohne diese Markierungen gezeichnet; der Stil zeichnet dort nichts.

Elemente in der Elementansicht
Delegaten zeichnen die Elemente in Elementansichten. Der Standard-Delegat von Qt, ` QStyledItemDelegate`, zeichnet ` CE_ItemViewItem ` mit ` QStyleOptionViewItem ` und berechnet die Elementgröße mit ` CT_ItemViewItem`, sodass ein Stil das Aussehen der Elemente auch ohne zugehörigen Delegaten steuert. ` QCommonStyle ` unterteilt das Element in den Hintergrund, die Kontrollanzeige, die Dekoration, den Text und den Fokusrahmen:
CE_ItemViewItemPE_PanelItemViewItemPE_IndicatorItemViewItemCheck(SE_ItemViewItemCheckIndicator)- Die Verzierung, gezeichnet mit paint() (
SE_ItemViewItemDecoration) - Der Text, der von ` QCommonStyle ` mit Auslassung und Zeilenumbruch layoutet und gezeichnet wird (
SE_ItemViewItemText) PE_FrameFocusRect(SE_ItemViewItemFocusRect)
Die Ansichten greifen auf Hinweise zur Elementdarstellung wie SH_ItemView_ShowDecorationSelected, SH_ItemView_ActivateItemOnSingleClick und SH_ItemView_ArrowKeysNavigateIntoChildren zurück. Um Datentypen oder Rollen zu unterstützen, die QStyledItemDelegate nicht verarbeitet, schreiben Sie einen benutzerdefinierten Delegaten; siehe Modell-/Ansichtsprogrammierung.
Die Statusflags und Mitglieder von ` QStyleOptionViewItem ` sind in der Klassendokumentation beschrieben; die wichtigsten sind ` State_Selected`, ` State_HasFocus`, ` checkState`, ` decorationPosition`, ` displayAlignment`, ` features`, ` icon`, ` text` und ` viewItemPosition`.
Siehe auch „Widget-Stilreferenz“, „Gestaltung von Schaltflächen und Eingabe-Widgets“, „Gestaltung von Containern und Fenstern“ sowie „ 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.