Sur cette page

Personnalisation des conteneurs et des fenêtres

Cette page fait partie du Guide de référence sur le style des widgets. Pour obtenir des explications sur les arborescences d'éléments, les captures d'écran et les tableaux, consultez cette page. Les indicateurs d'état et les membres communs définis par chaque widget sont répertoriés dans la section « Comment un style dessine un widget ».

Les widgets d’onglets et les barres d’onglets

QTabBar dessine ses onglets via le style. Une barre d’onglets fait soit partie d’un « QTabWidget », soit est autonome. Une barre autonome trace sa propre ligne de base. Dans un widget d’onglets, le widget dessine le cadre autour du volet et la barre se place par-dessus.

QTabWidget dessine l’ PE_FrameTabWidget à l’aide de ` QStyleOptionTabWidgetFrame`. Il demande au style où placer la barre d’onglets, le volet, le contenu et les widgets d’angle via ` SE_TabWidgetTabPane`, ` SE_TabWidgetTabContents`, ` SE_TabWidgetTabBar`, ` SE_TabWidgetLeftCorner` et ` SE_TabWidgetRightCorner`, puis il superpose la barre et le volet à l’aide de ` PM_TabBarBaseOverlap`.

QTabBar s'occupe elle-même de la mise en page des onglets ; le style n’a donc aucun contrôle sur leur emplacement. Lors de la mise en page, la barre demande la valeur « CT_TabBarTab », qui inclut « PM_TabBarTabHSpace » et « PM_TabBarTabVSpace », c’est-à-dire la largeur et la hauteur supplémentaires autour de l’étiquette. Elle dessine ensuite chaque onglet avec « CE_TabBarTab » et « QStyleOptionTab ». L’onglet sélectionné est dessiné en dernier afin qu’un style puisse le superposer à ses voisins.

  • PE_FrameTabBarBase (PM_TabBarBaseHeight, PM_TabBarBaseOverlap), pour une barre autonome, avec un QStyleOptionTabBarBase
  • CE_TabBarTab, une fois par onglet
    • CE_TabBarTabShape (PM_TabBarTabOverlap)
    • CE_TabBarTabLabel (SE_TabBarTabText, SE_TabBarTabLeftButton, SE_TabBarTabRightButton, PM_TabBarTabShiftHorizontal, PM_TabBarTabShiftVertical, PM_TabBarIconSize)
  • PE_IndicatorTabClose, générés par le bouton de fermeture d'un onglet pouvant être fermé (SH_TabBar_CloseButtonPosition, PM_TabCloseIndicatorWidth, PM_TabCloseIndicatorHeight)
  • PE_IndicatorTabTearLeft et PE_IndicatorTabTearRight, où les onglets sont coupés par les boutons de défilement (SE_TabBarTearIndicatorLeft, SE_TabBarTearIndicatorRight)

Les boutons de défilement qui apparaissent lorsque les onglets ne tiennent pas à l'écran sont tool buttons; le style les positionne à l'aide de SE_TabBarScrollLeftButton et SE_TabBarScrollRightButton et définit leur taille avec PM_TabBarScrollButtonWidth. La barre utilise également SH_TabBar_Alignment, SH_TabBar_ElideMode et SH_TabBar_PreferNoArrows.

Widget d’onglets comportant trois onglets et un bouton d’angle, avec les rectangles du volet, du contenu, de la barre d’onglets, de l’angle, de l’onglet et du libellé de l’onglet mis en évidence

QTabBar définit ces indicateurs d’état sur chaque onglet :

ÉtatActivé lorsque
State_SunkenL'onglet est sélectionné.
State_SelectedL'onglet est l'onglet actif.
State_HasFocusLa barre d'onglets a le focus et l'onglet est sélectionné.
State_MouseOverLa souris est positionnée sur l'onglet.

Les onglets individuels peuvent être désactivés même lorsque la barre d'onglets est activée. L'onglet est actif lorsque la barre d'onglets est active. Les membres de ` QStyleOptionTab ` sont :

MembreDescription
shapeUne valeur de ` QTabBar::Shape ` : onglets arrondis ou triangulaires, et le côté du widget sur lequel se trouve la barre.
textTexte de l'onglet.
icôneL'icône de l'onglet.
iconSizeLa taille de l'icône.
rowLa ligne dans laquelle se trouve l’onglet. Les barres d’onglets de Qt comportent une seule ligne.
positionUne valeur de type « TabPosition » : la position de l'onglet par rapport aux autres onglets, ou l Moving e lorsque l'utilisateur le fait glisser.
selectedPositionValeur d'SelectedPosition indiquant si l'onglet sélectionné se trouve à côté de cet onglet, et de quel côté.
cornerWidgetsIndicateurs de l’énumération « CornerWidget » qui précisent quels widgets de coin la barre d’onglets comporte.
documentModeIndique si la barre d’onglets est en mode « document mode ».
leftButtonSize, rightButtonSizeTailles des boutons situés à gauche et à droite de l’onglet, tels que le bouton de fermeture.
featuresIndicateurs de l'énumération « TabFeature » : indique si l'onglet dispose d'un cadre et s'il utilise sa valeur de taille minimale.
tabIndexL'index de l'onglet dans la barre.

Les membres de l'énumération ` QStyleOptionTabWidgetFrame ` sont les suivants :

MembreDescription
lineWidthLa largeur de ligne pour le tracé du panneau.
midLineWidthToujours 0.
shapeLa forme des onglets de la barre d'onglets.
tabBarSizeLa taille de la barre d'onglets.
tabBarRectLe rectangle de la barre d’onglets.
selectedTabRectLe rectangle de l'onglet sélectionné, afin que le cadre puisse s'y raccorder.
leftCornerWidgetSize, rightCornerWidgetSizeLes dimensions des widgets d’angle, le cas échéant.

QStyleOptionTabBarBase, utilisé pour l'PE_FrameTabBarBase, comporte les membres shape, tabBarRect, selectedTabRect et documentMode, qui ont la même signification.

Les zones de groupe

QGroupBox dessine un contrôle complexe, CC_GroupBox, avec un QStyleOptionGroupBox. Il calcule son indice de taille à partir de PM_IndicatorWidth, PM_IndicatorHeight et PM_CheckBoxLabelSpacing.

  • CC_GroupBox
    • SC_GroupBoxFrame (PE_FrameGroupBox)
    • SC_GroupBoxLabel, dessinée avec drawItemText(), plus PE_FrameFocusRect lorsque la case est active
    • SC_GroupBoxCheckBox (PE_IndicatorCheckBox), pour une case à cocher
    • SC_GroupBoxContents, la zone réservée aux widgets enfants

Les indications de style SH_GroupBox_TextLabelVerticalAlignment et SH_GroupBox_TextLabelColor contrôlent le titre. Qt n’impose pas la manière dont la case à cocher est dessinée ; QCommonStyle utilise PE_IndicatorCheckBox, de sorte que l’arborescence des éléments sous « Cases à cocher et boutons radio » s’applique.

Zone de groupe à cocher contenant deux cases à cocher, avec les sous-contrôles « cadre », « case à cocher », « étiquette » et « contenu » mis en évidence

QGroupBox définit les indicateurs d’état suivants :

ÉtatActivé lorsque
State_OnLa case à cocher est cochée.
State_OffLa case à cocher n’est pas cochée. Une zone de groupe qui ne peut pas être cochée ne définit ni State_On ni State_Off.
State_SunkenLa case à cocher ou l’étiquette de titre est enfoncée.

Les autres membres de ` QStyleOptionGroupBox ` sont :

MembreDescription
caractéristiquesQStyleOptionFrame::FrameFeatures indicateurs décrivant le cadre, tels que « Flat » pour une zone de groupe plate.
lineWidthLargeur de la ligne du cadre. Toujours égale à 1.
midLineWidthToujours 0.
textLe titre.
textAlignmentL'alignement du titre.
textColorLa valeur de l'SH_GroupBox_TextLabelColor. La zone de groupe ne la remplit que lorsque l'application n'a pas défini de pinceau « WindowText » dans la palette ; sinon, elle reste invalide et QCommonStyle utilise la palette à la place.

Les séparateurs

QSplitterHandle dessine un élément de contrôle, CE_Splitter, avec un pinceau QStyleOption. Le séparateur dimensionne ses poignées à l’aide de CT_Splitter et PM_SplitterWidth et interroge SH_Splitter_OpaqueResize pour déterminer s’il faut redimensionner les éléments enfants pendant que l’utilisateur fait glisser.

Séparateur comportant trois zones de texte et les deux poignées mises en évidence

La poignée remplit elle-même l’option plutôt que d’appeler ` initFrom()`. Elle définit les indicateurs d’état suivants :

ÉtatDéfinie lorsque
State_HorizontalLe séparateur est horizontal, la poignée est donc verticale.
State_MouseOverLa souris survole la poignée.
State_SunkenLa poignée est enfoncée.
State_EnabledLa poignée est activée.

Boîtes à outils

QToolBox contient une collection de widgets et les affiche un par un, avec un bouton d'onglet par widget dans une disposition verticale. Chaque bouton affiche une image d'CE_ToolBoxTab avec une QStyleOptionToolBox, et les boutons utilisent PM_SmallIconSize pour leurs icônes.

  • CE_ToolBoxTab, une fois par page
    • CE_ToolBoxTabShape
    • CE_ToolBoxTabLabel (SE_ToolBoxTabContents)

Boîte à outils comportant trois onglets, dont le premier est ouvert ; les onglets et la page active sont mis en surbrillance

Le bouton d’onglet définit les indicateurs d’état suivants :

ÉtatActivé lorsque
State_SelectedL'onglet est l'onglet actif.
State_SunkenLa touche Tab est enfoncée.

Les autres membres de l'QStyleOptionToolBox e sont :

MembreDescription
icôneL'icône affichée sur l'onglet.
texteLe texte figurant sur l'onglet.
positionUne valeur de type « TabPosition » : la position de l'onglet par rapport aux autres onglets.
positionSélectionnéeUne valeur de type « SelectedPosition » indiquant si l'onglet sélectionné est adjacent à cet onglet, et de quel côté.

Barres d'outils

Les barres d'outils font partie de l'main window framework. Une fenêtre principale comporte quatre zones de barres d'outils, une de chaque côté, et chaque zone peut contenir plusieurs lignes de barres d'outils. La fonction QMainWindow positionne les barres d'outils et renseigne les membres de position de leur option de style.

QToolBar dessine l’ CE_ToolBar à l’aide d’un QStyleOptionToolBar. Lorsque la barre d’outils flotte dans sa propre fenêtre, elle dessine également des PE_FrameMenu autour d’elle. Une barre d’outils déplaçable dessine sa poignée, et les séparateurs entre les actions sont de petits widgets qui dessinent PE_IndicatorToolBarSeparator.

  • CE_ToolBar (PM_ToolBarFrameWidth, PM_ToolBarItemMargin, PM_ToolBarItemSpacing)
    • PE_PanelToolBar
  • PE_FrameMenu, pour une barre d'outils flottante
  • PE_IndicatorToolBarHandle (SE_ToolBarHandle, PM_ToolBarHandleExtent)
  • PE_IndicatorToolBarSeparator (PM_ToolBarSeparatorExtent), dessinée par chaque séparateur

Les boutons d’outils de la barre s’affichent selon CC_ToolButton; voir Boutons d’outils. La taille par défaut de leurs icônes est définie par PM_ToolBarIconSize. Lorsque les actions ne tiennent pas dans la barre, celle-ci affiche un bouton d’extension avec l’icône SP_ToolBarHorizontalExtensionButton ou SP_ToolBarVerticalExtensionButton, dont la taille est déterminée par PM_ToolBarExtensionExtent.

Barre d'outils comportant une poignée, trois boutons d'outils et un séparateur, chaque élément étant mis en évidence par un contour

QToolBar définit cet indicateur d’état :

ÉtatActivé lorsque
State_HorizontalLa barre d’outils est horizontale, c’est-à-dire située dans la zone supérieure ou inférieure de la barre d’outils.

Les séparateurs utilisent une QStyleOption sans style, avec l’option State_Horizontal activée lorsque la barre d’outils est horizontale. Les autres éléments de QStyleOptionToolBar sont :

MembreDescription
featuresToolBarFeature flags : Movable si la barre d'outils peut être déplacée.
lineWidthLargeur du cadre de la barre d'outils.
midLineWidthToujours 0.
positionOfLineUne valeur de type « ToolBarPosition » : la position de la ligne de la barre d'outils au sein de sa zone.
positionWithinLineUne valeur de type « ToolBarPosition » : la position de la barre d'outils au sein de sa ligne.
toolBarAreaL'Qt::ToolBarArea dans laquelle se trouve la barre d'outils.

Widgets d'ancrage

QDockWidget dessine sa barre de titre avec CE_DockWidgetTitle et un QStyleOptionDockWidget, sauf si l’application a installé un widget de barre de titre personnalisé ou si le widget du dock est flottant avec des décorations de fenêtre natives. Un widget de dock flottant sans décorations natives dessine également PE_FrameDockWidget. Les boutons « flotter » et « fermer » sont des boutons d’outils qui dessinent PE_PanelButtonTool et affichent les icônes SP_TitleBarNormalButton et SP_TitleBarCloseButton.

  • PE_FrameDockWidget (PM_DockWidgetFrameWidth), lorsqu’il est flottant
  • CE_DockWidgetTitle (SE_DockWidgetTitleBarText, SE_DockWidgetIcon, PM_DockWidgetTitleMargin)
  • SE_DockWidgetFloatButton et SE_DockWidgetCloseButton (PM_DockWidgetTitleBarButtonMargin), les positions des boutons

QMainWindow dessine les séparateurs entre les widgets ancrés avec ` PE_IndicatorDockWidgetResizeHandle`, dont la taille est définie par ` PM_DockWidgetSeparatorExtent`. L’indicateur ` SH_DockWidget_ButtonsHaveFrame ` détermine si les boutons de la barre de titre sont encadrés.

Fenêtre principale comportant un widget d'ancrage à droite, avec la barre de titre, le texte du titre, les boutons de flottement et de fermeture, ainsi que le séparateur en surbrillance

L’option de la barre de titre ne définit aucun indicateur d’état en dehors des indicateurs courants. Les membres de ` QStyleOptionDockWidget ` sont :

MembreDescription
titleLe texte du titre.
closableIndique si le widget d'ancrage peut être fermé.
déplaçableIndique si le widget ancré peut être déplacé vers une autre zone.
flottantIndique si le widget d'ancrage peut flotter, c'est-à-dire se détacher de sa fenêtre principale.
barreDeTitreVerticaleIndique si la barre de titre s'affiche verticalement sur le côté gauche.

Barres de titre

Le contrôle complexe « barre de titre », CC_TitleBar, affiche les barres de titre des sous-fenêtres dans une QMdiArea. Il se compose d’un titre de fenêtre et du menu système, ainsi que des boutons de réduction, d’agrandissement et de fermeture. Certains styles proposent également des boutons permettant d’assombrir la fenêtre et d’accéder à une aide contextuelle.

  • CC_TitleBar (PM_TitleBarHeight, PM_TitleBarButtonSize, PM_TitleBarButtonIconSize)
    • SC_TitleBarSysMenu
    • SC_TitleBarLabel
    • SC_TitleBarMinButton, SC_TitleBarMaxButton, SC_TitleBarCloseButton, SC_TitleBarNormalButton
    • SC_TitleBarShadeButton, SC_TitleBarUnshadeButton, SC_TitleBarContextHelpButton

QCommonStyle affiche chaque bouton avec PE_PanelButtonTool et l’icône standard correspondante, disponible sur SP_TitleBarMenuButton à SP_TitleBarContextHelpButton. Lorsqu’une sous-fenêtre est agrandie, QMdiSubWindow déplace ses boutons dans la barre de menus de la fenêtre principale et les affiche avec CC_MdiControls ainsi que les sous-contrôles SC_MdiMinButton, SC_MdiNormalButton et SC_MdiCloseButton.

Barre de titre comportant une icône, le texte « Fenêtre secondaire » et les boutons de réduction, d'agrandissement et de fermeture, chaque sous-contrôle étant mis en évidence

Les membres de ` QStyleOptionTitleBar ` sont :

MembreDescription
textLe texte du titre.
icôneL'icône de la fenêtre.
titleBarFlagsQt::WindowFlags qui indiquent quels boutons la barre de titre comporte.
titleBarStateL'QWidget::windowState() de la fenêtre, qui détermine si le bouton d'agrandissement ou de restauration est affiché.

Poignées de redimensionnement

QSizeGrip dessine un élément de contrôle, ` CE_SizeGrip`, avec un ` QStyleOptionSizeGrip`, et calcule son indication de taille à l’aide de ` CT_SizeGrip`. ` QStatusBar ` affiche par défaut une poignée de redimensionnement dans son coin.

Barre d'état affichant le message « Prêt » et la poignée de redimensionnement dans le coin, mise en surbrillance

La poignée de redimensionnement ne définit aucun indicateur d’état en dehors des indicateurs courants. ` QStyleOptionSizeGrip ` possède un membre qui lui est propre :

MembreDescription
cornerUne valeur de type « Qt::Corner » : le coin de la fenêtre dans lequel se trouve la poignée.

Bandes élastiques

QRubberBand dessine un élément de contrôle, CE_RubberBand, avec une QStyleOptionRubberBand. Le style peut modifier la forme de la bande grâce à l’indicateur de style SH_RubberBand_Mask.

Affichage sous forme de liste avec un rectangle de sélection translucide en forme d’élastique, dont le contour est tracé

La bande ne définit aucun indicateur d’état en dehors des indicateurs courants. Les membres de ` QStyleOptionRubberBand ` sont :

MembreDescription
shapeUne valeur de type « QRubberBand::Shape » : un rectangle ou une ligne.
opaqueIndique si la bande doit être dessinée de manière opaque.

Voir également Référence sur le style des widgets, Personnalisation des boutons et des widgets de saisie, et Personnalisation des menus et des vues d'éléments.

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