Sur cette page

QDockWidget Class

La classe `QDockWidget` fournit un widget pouvant être ancré dans une ` QMainWindow ` ou affiché en tant que fenêtre de premier plan sur le bureau. En savoir plus…

En-tête : #include <QDockWidget>
CMake : find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake : QT += widgets
Hérite de : 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 propose le concept de widgets d'ancrage, également appelés palettes d'outils ou fenêtres utilitaires. Les fenêtres d'ancrage sont des fenêtres secondaires placées dans la zone d'ancrage autour de l'central widget, dans une interface de type « QMainWindow ».

Schéma illustrant l'intégration d'un widget « dock » dans des barres d'outils et d'un conteneur pour widgets

Les fenêtres d'ancrage peuvent être déplacées à l'intérieur de leur zone actuelle, déplacées vers de nouvelles zones et mises en mode flottant (c'est-à-dire désancrées) par l'utilisateur final. L'API QDockWidget permet au programmeur de restreindre la capacité des widgets d'ancrage à se déplacer, à passer en mode flottant 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 l’ window title du widget ancré, 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 s’afficher du tout.

L’apparence visuelle de la barre de titre et des boutons dépend de l’ style utilisé.

Un QDockWidget sert d’enveloppe à son widget enfant, défini via la fonction setWidget(). Les indications de taille personnalisées, les tailles minimales et maximales ainsi que les règles de dimensionnement doivent être implémentées 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 varient selon qu’il est ancré ou non ; un QDockWidget ancré n’a pas de cadre et sa barre de titre est plus petite.

Remarque : sous macOS, si le QDockWidget dispose d’un descripteur de fenêtre natif (par exemple, si la fonction ` winId()` est appelée sur lui ou sur le widget enfant), il ne sera alors pas possible, en raison d’une limitation, de faire glisser le widget ancré lors du désancrage. Le fait de commencer à faire glisser le widget de dock le détachera, mais un deuxième glissement sera nécessaire pour déplacer le widget de dock lui-même.

Voir également QMainWindow.

Documentation sur les types de membres

enum QDockWidget::DockWidgetFeature
flags QDockWidget::DockWidgetFeatures

ConstanteValeurDescription
QDockWidget::DockWidgetClosable0x01Le widget du dock peut être fermé.
QDockWidget::DockWidgetMovable0x02L'utilisateur peut déplacer le widget d'ancrage d'un dock à l'autre.
QDockWidget::DockWidgetFloatable0x04Le widget du dock peut être détaché de la fenêtre principale et affiché en tant que fenêtre indépendante.
QDockWidget::DockWidgetVerticalTitleBar0x08Le widget d'ancrage affiche une barre de titre verticale sur son côté gauche. Celle-ci peut être utilisée pour augmenter l'espace vertical dans une QMainWindow.
QDockWidget::NoDockWidgetFeatures0x00Le widget d'ancrage ne peut être ni fermé, ni déplacé, ni affiché en fenêtre flottante.

Le type `DockWidgetFeatures` est une définition de type pour `QFlags<DockWidgetFeature>`. Il stocke une combinaison (ou) de valeurs `DockWidgetFeature`.

Documentation des propriétés

allowedAreas : Qt::DockWidgetAreas

emplacements 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 également Qt::DockWidgetArea.

[since 6.9] dockLocation : Qt::DockWidgetArea

Cette propriété contient l'emplacement d'ancrage actuel, ou la valeur Qt::NoDockLocation si ce widget d'ancrage est flottant ou n'a pas de fenêtre principale comme parent.

Cette énumération a été introduite dans Qt 6.9.

Fonctions d'accès :

Qt::DockWidgetArea dockLocation() const
void setDockLocation(Qt::DockWidgetArea area)

Signal de notification :

void dockLocationChanged(Qt::DockWidgetArea area)

features : DockWidgetFeatures

Cette propriété détermine si le widget du dock est déplaçable, fermable 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)

Signal de notification :

void featuresChanged(QDockWidget::DockWidgetFeatures features)

Voir également DockWidgetFeature.

floating : bool

Cette propriété s'applique que le widget d'ancrage soit flottant ou non

Un widget d'ancrage flottant s'affiche à l'utilisateur sous la forme d'une fenêtre unique et indépendante, « au premier plan » de son QMainWindow parent, au lieu d'être ancré soit dans l'QMainWindow, soit dans un groupe de widgets d'ancrage à onglets.

Les widgets de dock flottants peuvent être positionnés et redimensionnés individuellement, aussi bien par programmation qu’à l’aide de la souris.

Par défaut, cette propriété est définie sur « true ».

Lorsque cette propriété change, le signal « topLevelChanged() » est émis.

Fonctions d’accès :

bool isFloating() const
void setFloating(bool floating)

Signal de notification :

void topLevelChanged(bool topLevel)

Voir également ` isWindow()` et ` topLevelChanged()`.

windowTitle : QString

Cette propriété contient le titre (légende) du widget du dock

Par défaut, cette propriété contient une chaîne vide.

Fonctions d'accès :

QString windowTitle() const
void setWindowTitle(const QString &)

Signal de notification :

void windowTitleChanged(const QString &title)

Documentation des fonctions membres

[explicit] QDockWidget::QDockWidget(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())

Crée un QDockWidget avec l’ parent comme parent et les indicateurs de fenêtre suivants : flags. Le widget d’ancrage sera placé dans la zone d’ancrage de gauche.

[explicit] QDockWidget::QDockWidget(const QString &title, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())

Crée un QDockWidget dont le parent est parent et dont les indicateurs de fenêtre sont flags. Le widget d'ancrage sera placé dans la zone d'ancrage de gauche.

Le titre de la fenêtre est défini sur title. Ce titre est utilisé lorsque le QDockWidget est ancré ou désancré. Il est également utilisé dans le menu contextuel fourni par QMainWindow.

Voir également setWindowTitle().

[virtual noexcept] QDockWidget::~QDockWidget()

Supprime le widget du dock.

[signal] void QDockWidget::allowedAreasChanged(Qt::DockWidgetAreas allowedAreas)

Ce signal est émis lorsque la propriété « allowedAreas » change. Le paramètre « allowedAreas » indique la nouvelle valeur de la propriété.

Remarque : signalde 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 du dock est déplacé vers un autre dock area, ou lorsqu’il est déplacé vers un autre emplacement au sein de sa zone de dock actuelle. Cela se produit lorsque le widget du dock est déplacé par programmation ou lorsqu’il est glissé vers un nouvel emplacement par l’utilisateur.

Remarque : signalde 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 » change. Le paramètre « features » indique la nouvelle valeur de la propriété.

Remarque : signalde notification pour la propriété features.

[virtual protected] void QDockWidget::initStyleOption(QStyleOptionDockWidget *option) const

Initialisez ` option ` avec les valeurs provenant de cette page : QDockWidget. Cette méthode est utile pour les sous-classes qui ont besoin d'un ` QStyleOptionDockWidget`, mais ne souhaitent pas renseigner elles-mêmes toutes les informations.

Voir également QStyleOption::initFrom().

bool QDockWidget::isAreaAllowed(Qt::DockWidgetArea area) const

Renvoie « true » si ce widget dock peut être placé à l'area indiquée ; 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)

Attribue à ce widget d'ancrage l'emplacement area. S'il est ancré à un autre emplacement, il sera déplacé vers area. S'il est flottant ou fait partie d'onglets flottants, le prochain appel de setFloating(false) l'ancrera à l'emplacement area.

Remarque : setDockLocation (Qt::NoDockLocation) équivaut à setFloating(true).

Remarque : fonctionde définition de la propriété dockLocation.

Cette fonction a été introduite dans Qt 6.9.

Voir également dockLocation() et dockLocationChanged().

void QDockWidget::setTitleBarWidget(QWidget *widget)

Définit une chaîne de caractères arbitraire (` widget `) comme barre de titre du widget d'ancrage. Si ` widget ` est égal à ` nullptr`, tout widget de barre de titre personnalisé précédemment défini sur le widget d'ancrage est retiré (sans être supprimé), et la barre de titre par défaut est alors utilisée à la place.

Si un widget de barre de titre est défini, ` QDockWidget ` n'utilisera pas les décorations de fenêtre natives lorsqu'il sera en mode flottant.

Voici quelques conseils pour implémenter des 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 alors vers le parent ` QDockWidget `, qui les gère de la manière habituelle : déplacement lorsque la barre de titre est glissée, ancrage et désancrage lorsqu’on double-clique dessus, etc.
  • Lorsque ` DockWidgetVerticalTitleBar ` est défini sur ` QDockWidget`, le widget de la barre de titre est repositionné en conséquence. Dans ` resizeEvent()` (), la barre de titre doit vérifier quelle orientation elle doit adopter :
    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 disposer de fonctions QWidget::sizeHint() et QWidget::minimumSizeHint() valides. Ces fonctions doivent prendre en compte l’orientation actuelle de la barre de titre.
  • Il n’est pas possible de supprimer une barre de titre d’un widget d’ancrage. Cependant, un effet similaire peut être obtenu en définissant une QWidget construite par défaut comme widget de la barre de titre.

En utilisant qobject_cast() comme indiqué ci-dessus, le widget de barre de titre dispose d’un accès complet à son parent QDockWidget. Il peut ainsi 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 du dock sur « widget ».

Si le widget d'ancrage est visible lors de l'ajout de widget, vous devez l'show er () explicitement.

Notez que vous devez ajouter la mise en page de l'widget avant d'appeler cette fonction ; sinon, l'widget ne sera pas visible.

Voir également widget().

QWidget *QDockWidget::titleBarWidget() const

Renvoie le widget de barre de titre personnalisé défini sur l'QDockWidget, ou nullptr si aucune barre de titre personnalisée n'a été définie.

Voir également setTitleBarWidget().

QAction *QDockWidget::toggleViewAction() const

Renvoie une action « checkable » pouvant être ajoutée aux menus et aux barres d’outils afin que l’utilisateur puisse afficher ou fermer ce widget d’ancrage.

Le texte de l'action correspond au titre de la fenêtre du widget ancré.

L'objet ` QAction ` appartient à ` QDockWidget`. Il sera automatiquement supprimé lorsque ` QDockWidget ` sera détruit.

Remarque : l’action ne peut pas être utilisée pour afficher ou masquer le widget d’ancrage par programmation. Utilisez la propriété ` visible ` à cette fin.

Voir également QAction::text et QWidget::windowTitle.

[signal] void QDockWidget::topLevelChanged(bool topLevel)

Ce signal est émis lorsque la propriété « floating » change. Le paramètre « topLevel » prend la valeur « true » si le widget d'ancrage est désormais flottant ; sinon, il prend la valeur « false ».

Remarque : signalde notification pour la propriété floating.

Voir aussi 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 masqué 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 : ce signal peut différer de ` QWidget::isVisible()`. Cela peut être le cas si un widget d'ancrage est minimisé ou transformé en onglet et associé à un onglet non sélectionné ou inactif.

QWidget *QDockWidget::widget() const

Renvoie le widget correspondant au widget du dock. Cette fonction renvoie zéro si le widget n'a pas été défini.

Voir aussi 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.