Auf dieser Seite

Gestaltung von Schaltflächen und Eingabe-Widgets

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 „Wie ein Stil ein Widget zeichnet“ aufgeführt.

Drucktasten

QPushButton zeichnet ein einzelnes Steuerelement, „ CE_PushButton “, mit einem „ QStyleOptionButton “. „ QCommonStyle “ unterteilt es in die Abschrägung, die Beschriftung und den Fokusrahmen:

  • CE_PushButton
    • CE_PushButtonBevel (PM_ButtonDefaultIndicator, PM_MenuButtonIndicator)
      • PE_FrameDefaultButton, für die Standardschaltfläche
      • PE_PanelButtonCommand
      • PE_IndicatorArrowDown, für eine Schaltfläche mit Menü
    • CE_PushButtonLabel (SE_PushButtonContents, PM_ButtonShiftHorizontal, PM_ButtonShiftVertical, PM_ButtonIconSize)
    • PE_FrameFocusRect (SE_PushButtonFocusRect)

Die Schaltfläche berechnet ihren Größenhinweis mit CT_PushButton und PM_ButtonMargin. Die Elementgrenzen variieren je nach Stil. In QCommonStyle liefert PE_FrameDefaultButton das gesamte abgeschrägte Rechteck, ebenso wie PE_PanelButtonCommand – außer bei einer Schaltfläche mit automatischer Standardeinstellung, bei der sich der Rahmen auf jeder Seite um PM_ButtonDefaultIndicator verkleinert.

Zwei Drucktasten mit abgeschrägter Kante, Beschriftung und umrandetem Fokusrechteck

QPushButton Setzt folgende Statusflags:

ZustandWird gesetzt, wenn
State_SunkenDie Schaltfläche gedrückt wird oder ihr Menü angezeigt wird.
State_OnDie Schaltfläche ist markiert.
State_RaisedDie Schaltfläche ist nicht flach und nicht gedrückt.

Die weiteren Elemente von „ QStyleOptionButton “ sind:

ElementBeschreibung
EigenschaftenFlags der Enumeration „ QStyleOptionButton::ButtonFeature “, die die Schaltfläche beschreiben: flach, Standard, automatischer Standard, mit Menü oder als Befehls-Link-Schaltfläche.
SymbolDas QIcon der Schaltfläche, falls vorhanden.
iconSizeDie Größe des Symbols.
textDer Text der Schaltfläche.

Kontrollkästchen und Optionsfelder

QCheckBox und „ QRadioButton “ weisen identische Strukturen auf. Beide verwenden „ QStyleOptionButton “ und zeichnen ein Steuerelement: „ CE_CheckBox “ oder „ CE_RadioButton “. „ QCommonStyle “ zeichnet die Markierung, die Beschriftung und den Fokusrahmen:

  • 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)

Die Größenangaben verwenden CT_CheckBox und CT_RadioButton. „Styling a Checkbox: A Walkthrough“ verfolgt die Darstellung eines Kontrollkästchens anhand des Widget- und QCommonStyle -Codes.

Kontrollkästchen und Optionsfeld mit Anzeigen, Beschriftung und umrandetem Fokusrechteck

Die Schaltflächen setzen folgende Statusflags:

StatusWird gesetzt, wenn
State_Sunkendie Schaltfläche gedrückt wird. Der anklickbare Bereich ist SE_CheckBoxClickRect oder SE_RadioButtonClickRect, was in QCommonStyle sowohl die Beschriftung als auch den Indikator umfasst.
State_NoChangeDas Kontrollkästchen ist teilweise aktiviert (ein Tristate-Kontrollkästchen).
State_OnDie Schaltfläche ist aktiviert.
State_OffDie Schaltfläche ist nicht markiert.

Die anderen Elemente von „ QStyleOptionButton “ sind unter „Drucktasten“ aufgeführt.

Werkzeugschaltflächen

QToolButton zeichnet ein komplexes Steuerelement, „ CC_ToolButton “, mit einem „ QStyleOptionToolButton “. Es verfügt über zwei Unterelemente: die Schaltfläche selbst und, bei einer Schaltfläche mit „ a menu button “, die Menüanzeige.

  • CC_ToolButton
    • SC_ToolButton
      • PE_PanelButtonTool (PM_DefaultFrameWidth)
      • PE_FrameFocusRect
      • CE_ToolButtonLabel (PM_ButtonShiftHorizontal, PM_ButtonShiftVertical)
    • SC_ToolButtonMenu (PM_MenuButtonIndicator)
      • PE_IndicatorButtonDropDown
      • PE_IndicatorArrowDown

Für Popups unter instant und delayed gibt es kein Menü-Unterelement, daher zeichnet QCommonStyle stattdessen PE_IndicatorArrowDown in der Ecke des Schaltflächenrechtecks. Der Größenhinweis verwendet CT_ToolButton, und die Schaltfläche greift auf SH_ToolButton_PopupDelay und SH_ToolButtonStyle zurück. Schaltflächen in einer Symbolleiste übernehmen ihre Symbolgröße von der Symbolleiste. Eigenständige Schaltflächen verwenden PM_ButtonIconSize.

Werkzeugschaltfläche mit einem Symbol, Text und einer Menüanzeige, wobei die Schaltfläche und das Menü-Unterelement umrandet sind

QToolButton Setzt folgende Statusflags:

StatusWird gesetzt, wenn
State_AutoRaiseDie Eigenschaft „ autoRaise “ gesetzt ist.
State_RaisedDie Schaltfläche ist nicht markiert oder gedrückt. „ QCommonStyle “ löscht das Flag dann wieder, wenn „ State_AutoRaise “ gesetzt ist und sich der Mauszeiger nicht über der Schaltfläche befindet.
State_SunkenDie Schaltfläche wird gedrückt oder ihr Menü wird angezeigt.
State_OnDie Schaltfläche ist aktivierbar und aktiviert.

Die weiteren Elemente von „ QStyleOptionToolButton “ sind:

ElementBeschreibung
arrowTypeEin Wert von „ Qt::ArrowType “, der die Richtung des gezeichneten Pfeils angibt, falls anstelle eines Symbols ein Pfeil gezeichnet wird.
featuresFlags der Enumeration „ QStyleOptionToolButton::ToolButtonFeature “: Gibt an, ob die Schaltfläche einen Pfeil anzeigt, über eine Menüschaltfläche verfügt oder ein verzögertes Popup-Fenster aufruft.
fontDie Schriftart „ QFont “ der Schaltflächenbeschriftung.
iconDie „ QIcon “ der Schaltfläche.
iconSizeDie Größe des Symbols.
posDie Position der Schaltfläche, wie durch ` QWidget::pos()` angegeben.
textDer Text der Schaltfläche.
toolButtonStyleEin Wert von „ Qt::ToolButtonStyle “, der festlegt, ob die Schaltfläche das Symbol, den Text oder beides anzeigt.

Kombinationsfelder

QComboBox zeichnet die Schaltfläche und die Beschriftung mit „ CC_ComboBox “ und „ CE_ComboBoxLabel “, jeweils mit einer „ QStyleOptionComboBox “. „ QCommonStyle “ lässt den Text der Beschriftung bei einer bearbeitbaren Liste weg, da dieser vom untergeordneten Element „ QLineEdit “ gezeichnet wird. Die Popup-Liste ist eine von einem Delegaten gezeichnete Elementansicht, doch der Stil steuert ihre Größe und Position mit „ SC_ComboBoxListBoxPopup “. Bei einem bearbeitbaren Feld legt der Stil mit „ SC_ComboBoxEditField “ fest, wo das Eingabefeld platziert wird; das Feld selbst ist ein „ QLineEdit “-Unterelement.

  • CC_ComboBox (PM_ComboBoxFrameWidth)
    • SC_ComboBoxFrame
    • SC_ComboBoxArrow (PE_IndicatorArrowDown)
    • SC_ComboBoxEditField
    • SC_ComboBoxListBoxPopup, zur Positionierung des Popups
  • CE_ComboBoxLabel (SC_ComboBoxEditField)

Der Größenhinweis verwendet „ CT_ComboBox “. Stilhinweise wie „ SH_ComboBox_Popup “, „ SH_ComboBox_PopupFrameStyle “ und „ SH_ComboBox_UseNativePopup “ legen fest, wie das Popup aussieht und sich verhält.

Kombinationsfeld mit umrandeten Unterelementen: Rahmen, Eingabefeld und Pfeile

QComboBox setzt folgende Statusflags:

ZustandWird gesetzt, wenn
State_SelectedDas Feld ist nicht bearbeitbar und hat den Fokus.
State_SunkenSC_ComboBoxArrow ist aktiv.
State_OnDie Popup-Liste ist sichtbar.

Die weiteren Elemente von „ QStyleOptionComboBox “ sind:

ElementBeschreibung
currentIconDas Symbol des aktuellen Elements.
currentTextDer Text des aktuellen Elements.
editableGibt an, ob die Kombinationsfeld bearbeitet werden kann.
frameGibt an, ob die Kombinationsfeld einen Rahmen hat.
iconSizeDie Größe des Symbols des aktuellen Elements.
popupRectDas Begrenzungsrechteck der Popup-Liste.
textAlignmentDie Ausrichtung des Textes in der Beschriftung.

Drehfelder

QSpinBox, „ QDoubleSpinBox “ und „ QDateTimeEdit “ zeichnen „ CC_SpinBox “ mit „ QStyleOptionSpinBox “. Das Eingabefeld ist ein untergeordnetes Element von „ QLineEdit “, dessen Geometrie der Stil für „ SC_SpinBoxEditField “ zurückgibt.

  • CC_SpinBox (PM_SpinBoxFrameWidth)
    • SC_SpinBoxFrame
    • SC_SpinBoxUp
      • PE_PanelButtonBevel
      • PE_IndicatorSpinUp oder PE_IndicatorSpinPlus, je nach buttonSymbols
    • SC_SpinBoxDown
      • PE_PanelButtonBevel
      • PE_IndicatorSpinDown oder PE_IndicatorSpinMinus
    • SC_SpinBoxEditField

Ein Stil muss die Schaltflächenfelder nicht unbedingt mit „ PE_PanelButtonBevel “ zeichnen. Der Größenhinweis verwendet „ CT_SpinBox “, und das Widget berücksichtigt Hinweise wie „ SH_SpinBox_ButtonsInsideFrame “, „ SH_SpinBox_StepModifier “ und „ SH_SpinControls_DisableOnBounds “.

Spin-Box mit umrandeten Unterelementen: Rahmen, Eingabefeld, Schaltfläche „Nach oben“ und Schaltfläche „Nach unten“

Das Spin-Feld setzt dieses Statusflag:

StatusWird gesetzt, wenn
State_SunkenDas Unterelement „ SC_SpinBoxUp “ oder „ SC_SpinBoxDown “ gedrückt wird.

Die weiteren Elemente von „ QStyleOptionSpinBox “ sind:

ElementBeschreibung
frameGibt an, ob das Drehfeld einen Rahmen anzeigt.
buttonSymbolsEin Wert vom Typ „ QAbstractSpinBox::ButtonSymbols “, der die Symbole auf den Schaltflächen auswählt: Pfeile, Plus und Minus oder keine.
stepEnabledQAbstractSpinBox::StepEnabled Flags, die angeben, welche der Schaltflächen den Wert schrittweise ändern können. Eine Schaltfläche, mit der keine Schrittweise Änderung möglich ist, wird deaktiviert dargestellt.

Schieberegler

QSlider Zeichnet „ CC_Slider “ mit „ QStyleOptionSlider “. Die Größenangabe wird anhand von „ PM_SliderThickness “ und „ CT_Slider “ berechnet, die Mindestgrößenangabe anhand von „ PM_SliderLength “.

  • CC_Slider (PM_SliderLength, PM_SliderControlThickness, PM_SliderTickmarkOffset, PM_SliderSpaceAvailable)
    • SC_SliderGroove
    • SC_SliderHandle
    • SC_SliderTickmarks

QCommonStyle zeichnet nur die Skalenmarkierungen; die Rille und der Schieberegler sind immer stilabhängig. Stile müssen für ` SC_SliderTickmarks` kein Rechteck zurückgeben. Fusion gibt ein leeres Rechteck zurück und zeichnet die Skalenmarkierungen unterhalb des Schiebereglers in dem im Screenshot dargestellten Bereich. Das Widget greift auf ` SH_Slider_AbsoluteSetButtons`, ` SH_Slider_PageSetButtons` und ` SH_Slider_SnapToValue` zurück.

Horizontaler Schieberegler mit Skalenmarkierungen, wobei die Unterelemente „Nut“, „Griff“ und „Skalenmarkierung“ umrandet sind

QDial verwendet dieselbe Option und zeichnet „ CC_Dial “ mit den Unterelementen „ SC_DialGroove “, „ SC_DialHandle “ und „ SC_DialTickmarks “.

QSlider Setzt folgende Statusflags:

StatusWird gesetzt, wenn
State_HorizontalDer Schieberegler horizontal ist.
State_SunkenEin beliebiges Untersteuerelement wird gedrückt, einschließlich der Rille. activeSubControls gibt an, welches.

QStyleOptionSlider bedient alle ` QAbstractSlider`s. Seine Mitglieder sind:

ElementBeschreibung
orientationEin Wert von „ Qt::Orientation “: vertikal oder horizontal.
minimumDer Mindestwert.
maximalDer Maximalwert.
tickPositionEin Wert vom Typ „ QSlider::TickPosition “, der angibt, wo die Markierungen gezeichnet werden.
tickIntervalDer Abstand zwischen den Skalenmarkierungen, ausgedrückt in Schiebereglerwerten.
upsideDownDie Richtung, in der der Wert ansteigt. Alle abstrakten Schieberegler verwenden dieses Element anstelle von ` QStyleOption::direction`.
sliderPositionDie Position des Schiebereglers, ausgedrückt als Schiebereglerwert. Sie entspricht „ sliderValue “, solange „ tracking “ aktiviert ist; andernfalls wird der Wert erst aktualisiert, wenn der Schieberegler losgelassen wird.
sliderValueDer aktuelle Wert.
singleStepDer Betrag, um den sich der Wert bei einem einzelnen Schritt ändert, z. B. beim Drücken einer Pfeiltaste.
pageStepDer Betrag, um den sich der Wert bei einem Seitenschritt ändert, z. B. bei einem Klick in die Rille.
notchTargetDer bevorzugte Abstand zwischen den Markierungen in Pixeln. Wird von „ QDial “ verwendet.
dialWrappingGibt an, ob der Drehregler umläuft. Wird von „ QDial “ verwendet.
keyboardModifiersDie Modifikatortasten, die während des letzten Mausereignisses gedrückt gehalten wurden, für Stile, bei denen Modifikatoren das Ziehverhalten ändern können.

Bildlaufleisten

QScrollBar Zeichnet „ CC_ScrollBar “ mit „ QStyleOptionSlider “ an. Während der Benutzer den Schieberegler zieht, springt der Wert zurück, wenn der Mauszeiger weiter als „ PM_MaximumDragDistance “ außerhalb des Schiebereglers bewegt wird.

  • 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 zeichnet jedes Untersteuerelement mit dem gleichnamigen Steuerelement. Einige Stile zeichnen die Linienindikatoren mit ` PE_IndicatorArrowUp ` und die anderen Pfeilprimitive sowie die Seitenbereiche mit ` PE_PanelButtonBevel`; dies hängt vom jeweiligen Stil ab. ` SC_ScrollBarFirst ` und ` SC_ScrollBarLast ` sind optionale Schaltflächen, die zu den Enden springen; die meisten Stile geben hierfür ein leeres Rechteck zurück. Der Größenhinweis verwendet ` CT_ScrollBar`, und zu den Verhaltenshinweisen gehören ` SH_ScrollBar_LeftClickAbsolutePosition`, ` SH_ScrollBar_ContextMenu` und ` SH_ScrollBar_Transient`.

Horizontale Bildlaufleiste mit umrandeten Nuten, Zeilenschaltflächen, Seitenbereichen und Schieberegler-Unterelementen

QScrollBar Setzt folgende Statusflags:

StatusWird gesetzt, wenn
State_HorizontalDie Bildlaufleiste ist horizontal.
State_SunkenEin Unterelement wird gedrückt und der Mauszeiger hat es noch nicht verlassen.
State_OnDie Leiste ist eine vorübergehende Bildlaufleiste, die derzeit angezeigt wird.

Die Mitglieder von ` QStyleOptionSlider ` sind unter „Schieberegler“ aufgeführt. ` sliderPosition`, ` sliderValue`, ` pageStep` und ` upsideDown ` legen die Größe und Position des Schiebereglers fest.

Fortschrittsbalken

QProgressBar zeichnet ein Steuerelement, CE_ProgressBar, mit einem QStyleOptionProgressBar. QCommonStyle unterteilt es in die Leiste, den Inhalt und die Beschriftung:

  • CE_ProgressBar
    • CE_ProgressBarGroove (SE_ProgressBarGroove)
    • CE_ProgressBarContents (SE_ProgressBarContents, PM_ProgressBarChunkWidth)
    • CE_ProgressBarLabel (SE_ProgressBarLabel)

Stile, die den Inhalt als eine Reihe von Blöcken darstellen, verwenden „ PE_IndicatorProgressChunk “. In „ QCommonStyle “ und „Fusion“ nehmen der Groove, der Inhalt und die Beschriftung den gesamten Balken ein; die Beschriftung ist zentrierter Text, der über den Inhalt gelegt wird, sodass ihr Rechteck kein separater Bereich ist. Der Größenhinweis verwendet „ CT_ProgressBar “. Ein „Busy“-Indikator – ein Balken, dessen Minimal- und Maximalwert beide Null sind – wird durch den Stil animiert.

Fortschrittsbalken bei 40 %, wobei die Rille, der Inhalt und das Etikett umrandet sind

QProgressBar setzt dieses Statusflag:

ZustandWird gesetzt, wenn
State_HorizontalDer Balken horizontal ist.

Die weiteren Elemente von „ QStyleOptionProgressBar “ sind:

MitgliedBeschreibung
minimumDer Mindestwert.
maximalDer Maximalwert.
FortschrittDer aktuelle Wert.
textDer Beschriftungstext.
textAlignmentDie Ausrichtung des Textes in der Beschriftung.
textVisibleGibt an, ob die Beschriftung gezeichnet wird.
invertedAppearanceGibt an, ob der Balken vom gegenüberliegenden Ende aus gefüllt wird, beispielsweise bei einem horizontalen Balken von rechts nach links.
bottomToTopGibt an, ob die Beschriftung eines vertikalen Balkens so gedreht ist, dass sie von unten nach oben gelesen wird.

Siehe auch „Widget-Stilreferenz“, „Gestaltung von Containern und Fenstern“ sowie „Gestaltung von Menüs und Elementansichten“.

© 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.