QDockWidget Class
La classe QDockWidget fournit un widget qui peut être ancré à l'intérieur d'un site QMainWindow ou flottant en tant que fenêtre de premier niveau sur le bureau. Plus d'informations...
| En-tête : | #include <QDockWidget> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Widgets)target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake : | QT += widgets |
| Héritages : | QWidget |
Types publics
| enum | DockWidgetFeature { DockWidgetClosable, DockWidgetMovable, DockWidgetFloatable, DockWidgetVerticalTitleBar, NoDockWidgetFeatures } |
| flags | DockWidgetFeatures |
Propriétés
|
|
Fonctions publiques
| QDockWidget(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) | |
| QDockWidget(const QString &title, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) | |
| virtual | ~QDockWidget() |
| Qt::DockWidgetAreas | allowedAreas() const |
| Qt::DockWidgetArea | dockLocation() const |
| QDockWidget::DockWidgetFeatures | features() const |
| bool | isAreaAllowed(Qt::DockWidgetArea area) const |
| bool | isFloating() const |
| void | setAllowedAreas(Qt::DockWidgetAreas areas) |
(since 6.9) void | setDockLocation(Qt::DockWidgetArea area) |
| void | setFeatures(QDockWidget::DockWidgetFeatures features) |
| void | setFloating(bool floating) |
| void | setTitleBarWidget(QWidget *widget) |
| void | setWidget(QWidget *widget) |
| QWidget * | titleBarWidget() const |
| QAction * | toggleViewAction() const |
| QWidget * | widget() const |
Signaux
| void | allowedAreasChanged(Qt::DockWidgetAreas allowedAreas) |
| void | dockLocationChanged(Qt::DockWidgetArea area) |
| void | featuresChanged(QDockWidget::DockWidgetFeatures features) |
| void | topLevelChanged(bool topLevel) |
| void | visibilityChanged(bool visible) |
Fonctions protégées
| virtual void | initStyleOption(QStyleOptionDockWidget *option) const |
Fonctions protégées réimplémentées
| virtual void | changeEvent(QEvent *event) override |
| virtual void | closeEvent(QCloseEvent *event) override |
| virtual bool | event(QEvent *event) override |
| virtual void | paintEvent(QPaintEvent *event) override |
Description détaillée
QDockWidget fournit le concept de widgets de dock, également connus sous le nom de palettes d'outils ou de fenêtres utilitaires. Les fenêtres d'ancrage sont des fenêtres secondaires placées dans la zone du widget d'ancrage autour de central widget dans un site QMainWindow.

Les fenêtres d'ancrage peuvent être déplacées à l'intérieur de leur zone actuelle, déplacées dans de nouvelles zones et déplacées (par exemple, désancrées) par l'utilisateur final. L'API QDockWidget permet au programmeur de restreindre la capacité des widgets d'ancrage à se déplacer, à flotter et à se fermer, ainsi que les zones dans lesquelles ils peuvent être placés.
Apparence
Un QDockWidget se compose d'une barre de titre et d'une zone de contenu. La barre de titre affiche les widgets du dock window title, un bouton de flottement et un bouton de fermeture. Selon l'état du QDockWidget, les boutons de flottement et de fermeture peuvent être désactivés ou ne pas être affichés du tout.
L'aspect visuel de la barre de titre et des boutons dépend du site style utilisé.
Un QDockWidget agit comme une enveloppe pour son widget enfant, défini avec setWidget(). Les indications de taille personnalisées, les tailles minimales et maximales et les politiques de taille doivent être mises en œuvre dans le widget enfant. QDockWidget les respectera, en ajustant ses propres contraintes pour inclure le cadre et le titre. Les contraintes de taille ne doivent pas être définies sur le QDockWidget lui-même, car elles changent selon qu'il est ou non ancré ; un QDockWidget ancré n'a pas de cadre et une barre de titre plus petite.
Remarque : sous macOS, si le QDockWidget dispose d'une poignée de fenêtre native (par exemple, si winId() est appelé sur lui ou sur le widget enfant), il ne sera pas possible, en raison d'une limitation, de faire glisser le widget d'ancrage lors de l'annulation de l'ancrage. Le fait de commencer à faire glisser le widget de la station d'accueil le désancre, mais un deuxième glissement sera nécessaire pour déplacer le widget de la station d'accueil lui-même.
Voir également QMainWindow.
Documentation des types de membres
enum QDockWidget::DockWidgetFeature
flags QDockWidget::DockWidgetFeatures
| Constante | Valeur | Description |
|---|---|---|
QDockWidget::DockWidgetClosable | 0x01 | Le widget dock peut être fermé. |
QDockWidget::DockWidgetMovable | 0x02 | Le widget de dock peut être déplacé entre les docks par l'utilisateur. |
QDockWidget::DockWidgetFloatable | 0x04 | Le widget dock peut être détaché de la fenêtre principale et flotter comme une fenêtre indépendante. |
QDockWidget::DockWidgetVerticalTitleBar | 0x08 | Le widget dock affiche une barre de titre verticale sur son côté gauche. Cette barre peut être utilisée pour augmenter l'espace vertical dans une fenêtre QMainWindow. |
QDockWidget::NoDockWidgetFeatures | 0x00 | Le widget dock ne peut pas être fermé, déplacé ou flottant. |
Le type DockWidgetFeatures est un typedef pour QFlags<DockWidgetFeature>. Il stocke une combinaison OU de valeurs de DockWidgetFeatures.
Documentation sur les propriétés
allowedAreas : Qt::DockWidgetAreas
zones où le widget dock peut être placé
La valeur par défaut est Qt::AllDockWidgetAreas.
Fonctions d'accès :
| Qt::DockWidgetAreas | allowedAreas() const |
| void | setAllowedAreas(Qt::DockWidgetAreas areas) |
Signal de notification :
| void | allowedAreasChanged(Qt::DockWidgetAreas allowedAreas) |
Voir aussi Qt::DockWidgetArea.
[since 6.9] dockLocation : Qt::DockWidgetArea
Cette propriété contient l'emplacement actuel du dock, ou Qt::NoDockLocation si ce widget de dock est flottant ou n'a pas de parent de fenêtre principale.
Cette propriété a été introduite dans Qt 6.9.
Fonctions d'accès :
| Qt::DockWidgetArea | dockLocation() const |
| void | setDockLocation(Qt::DockWidgetArea area) |
Notifier signal :
| void | dockLocationChanged(Qt::DockWidgetArea area) |
features : DockWidgetFeatures
Cette propriété indique si le widget dock est mobile, refermable et flottant
Par défaut, cette propriété est définie sur une combinaison de DockWidgetClosable, DockWidgetMovable et DockWidgetFloatable.
Fonctions d'accès :
| QDockWidget::DockWidgetFeatures | features() const |
| void | setFeatures(QDockWidget::DockWidgetFeatures features) |
Notifier signal :
| void | featuresChanged(QDockWidget::DockWidgetFeatures features) |
Voir également DockWidgetFeature.
floating : bool
Cette propriété indique si le widget dock est flottant
Un widget d'ancrage flottant est présenté à l'utilisateur comme une fenêtre unique et indépendante "au-dessus" de son parent QMainWindow, au lieu d'être ancré dans le site QMainWindow ou dans un groupe de widgets d'ancrage à onglets.
Les widgets flottants peuvent être positionnés et redimensionnés individuellement, à la fois par programme et par interaction avec la souris.
Par défaut, la valeur de cette propriété est true.
Lorsque cette propriété change, le signal topLevelChanged() est émis.
Fonctions d'accès :
| bool | isFloating() const |
| void | setFloating(bool floating) |
Signal Notifier :
| void | topLevelChanged(bool topLevel) |
Voir également isWindow() et topLevelChanged().
windowTitle : QString
Cette propriété contient le titre du widget dock (caption)
Par défaut, cette propriété contient une chaîne vide.
Fonctions d'accès :
| QString | windowTitle() const |
| void | setWindowTitle(const QString &) |
Signal du notificateur :
| void | windowTitleChanged(const QString &title) |
Fonction membre Documentation
[explicit] QDockWidget::QDockWidget(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
Construit un QDockWidget avec le parent parent et les drapeaux de fenêtre flags. Le widget dock sera placé dans la zone gauche du widget dock.
[explicit] QDockWidget::QDockWidget(const QString &title, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
Construit un QDockWidget avec le parent parent et les drapeaux de fenêtre flags. Le widget d'ancrage sera placé dans la zone gauche du widget d'ancrage.
Le titre de la fenêtre est défini sur title. Ce titre est utilisé lorsque le QDockWidget est ancré et désancré. Il est également utilisé dans le menu contextuel fourni par QMainWindow.
Voir également setWindowTitle().
[virtual noexcept] QDockWidget::~QDockWidget()
Détruit le widget du dock.
[signal] void QDockWidget::allowedAreasChanged(Qt::DockWidgetAreas allowedAreas)
Ce signal est émis lorsque la propriété allowedAreas est modifiée. Le paramètre allowedAreas indique la nouvelle valeur de la propriété.
Note : Signal de notification pour la propriété allowedAreas.
[override virtual protected] void QDockWidget::changeEvent(QEvent *event)
Réimplémente : QWidget::changeEvent(QEvent *event).
[override virtual protected] void QDockWidget::closeEvent(QCloseEvent *event)
Réimplémente : QWidget::closeEvent(QCloseEvent *event).
[signal] void QDockWidget::dockLocationChanged(Qt::DockWidgetArea area)
Ce signal est émis lorsque le widget de dock est déplacé vers un autre dock area, ou est déplacé vers un emplacement différent dans sa zone de dock actuelle. Cela se produit lorsque le widget dock est déplacé par programme ou lorsque l'utilisateur le fait glisser vers un nouvel emplacement.
Remarque : signal de notification pour la propriété dockLocation.
Voir également dockLocation() et setDockLocation().
[override virtual protected] bool QDockWidget::event(QEvent *event)
Réimplémente : QWidget::event(QEvent *event).
[signal] void QDockWidget::featuresChanged(QDockWidget::DockWidgetFeatures features)
Ce signal est émis lorsque la propriété features est modifiée. Le paramètre features indique la nouvelle valeur de la propriété.
Note : Signal de notification pour la propriété features.
[virtual protected] void QDockWidget::initStyleOption(QStyleOptionDockWidget *option) const
Initialiser option avec les valeurs de QDockWidget. Cette méthode est utile pour les sous-classes qui ont besoin d'un QStyleOptionDockWidget, mais qui ne veulent pas remplir toutes les informations elles-mêmes.
Voir aussi QStyleOption::initFrom().
bool QDockWidget::isAreaAllowed(Qt::DockWidgetArea area) const
Renvoie true si ce widget dock peut être placé dans l'emplacement donné area; sinon, renvoie false.
[override virtual protected] void QDockWidget::paintEvent(QPaintEvent *event)
Réimplémente : QWidget::paintEvent(QPaintEvent *event).
[since 6.9] void QDockWidget::setDockLocation(Qt::DockWidgetArea area)
Affecte ce widget d'ancrage à area. S'il est ancré à un autre emplacement d'ancrage, il se déplacera à area. S'il est flottant ou fait partie d'onglets flottants, le prochain appel de setFloating(false) l'ancrera à area.
Remarque : setDockLocation(Qt::NoDockLocation) est équivalent à setFloating(true).
Note : Fonction de définition de la propriété dockLocation.
Cette fonction a été introduite dans Qt 6.9.
Voir aussi dockLocation() et dockLocationChanged().
void QDockWidget::setTitleBarWidget(QWidget *widget)
Définit une adresse arbitraire widget comme barre de titre du widget dock. Si widget est nullptr, tout widget de barre de titre personnalisé précédemment défini sur le widget dock est supprimé, mais pas effacé, et la barre de titre par défaut sera utilisée à la place.
Si un widget de barre de titre est défini, QDockWidget n'utilisera pas les décorations natives de la fenêtre lorsqu'elle est flottante.
Voici quelques conseils pour la mise en œuvre de barres de titre personnalisées :
- Les événements de souris qui ne sont pas explicitement gérés par le widget de barre de titre doivent être ignorés en appelant QMouseEvent::ignore(). Ces événements se propagent ensuite au parent QDockWidget, qui les gère de la manière habituelle : déplacement lorsque la barre de titre est tirée, ancrage et désancrage lorsqu'elle est double-cliquée, etc.
- Lorsque DockWidgetVerticalTitleBar est placé sur QDockWidget, le widget de la barre de titre est repositionné en conséquence. Dans resizeEvent(), la barre de titre doit vérifier l'orientation qu'elle doit prendre :
QDockWidget *dockWidget = qobject_cast<QDockWidget*>(parentWidget()); if (dockWidget->features() & QDockWidget::DockWidgetVerticalTitleBar) { // I need to be vertical } else { // I need to be horizontal }
- Le widget de la barre de titre doit avoir une fonction valide QWidget::sizeHint() et QWidget::minimumSizeHint(). Ces fonctions doivent tenir compte de l'orientation actuelle de la barre de titre.
- Il n'est pas possible de supprimer une barre de titre d'un widget dock. Toutefois, il est possible d'obtenir un effet similaire en définissant une construction par défaut QWidget comme widget de barre de titre.
En utilisant qobject_cast() comme indiqué ci-dessus, le widget de la barre de titre a un accès complet à son parent QDockWidget. Il peut donc effectuer des opérations telles que l'ancrage et le masquage en réponse aux actions de l'utilisateur.
Voir également titleBarWidget() et DockWidgetVerticalTitleBar.
void QDockWidget::setWidget(QWidget *widget)
Définit le widget pour le widget dock à widget.
Si le widget de la station d'accueil est visible lorsque widget est ajouté, vous devez show() l'ajouter explicitement.
Notez que vous devez ajouter la disposition de widget avant d'appeler cette fonction, sinon widget ne sera pas visible.
Voir également widget().
QWidget *QDockWidget::titleBarWidget() const
Renvoie le widget de barre de titre personnalisé défini sur le site QDockWidget, ou nullptr si aucune barre de titre personnalisée n'a été définie.
Voir aussi setTitleBarWidget().
QAction *QDockWidget::toggleViewAction() const
Renvoie une action vérifiable qui peut être ajoutée aux menus et aux barres d'outils afin que l'utilisateur puisse afficher ou fermer ce widget dock.
Le texte de l'action est défini comme le titre de la fenêtre du widget dock.
L'objet QAction appartient à l'objet QDockWidget et sera automatiquement supprimé lors de la destruction de l'objet QDockWidget.
Remarque : l'action ne peut pas être utilisée pour afficher ou masquer le widget dock de manière programmatique. Utilisez la propriété visible pour cela.
Voir également QAction::text et QWidget::windowTitle.
[signal] void QDockWidget::topLevelChanged(bool topLevel)
Ce signal est émis lorsque la propriété floating est modifiée. Le paramètre topLevel est vrai si le widget dock est maintenant flottant, sinon il est faux.
Remarque : signal de notification pour la propriété floating.
Voir également isWindow().
[signal] void QDockWidget::visibilityChanged(bool visible)
Ce signal est émis lorsque le widget d'ancrage devient visible (ou invisible). Cela se produit lorsque le widget est caché ou affiché, ainsi que lorsqu'il est ancré dans une zone d'ancrage à onglets et que son onglet est sélectionné ou désélectionné.
Remarque : le signal peut être différent de QWidget::isVisible(). Cela peut être le cas si un widget de dock est minimisé ou tabifié et associé à un onglet non sélectionné ou inactif.
QWidget *QDockWidget::widget() const
Renvoie le widget du widget dock. Cette fonction renvoie zéro si le widget n'a pas été défini.
Voir également setWidget().
© 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.