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 ».
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
| Constante | Valeur | Description |
|---|---|---|
QDockWidget::DockWidgetClosable | 0x01 | Le widget du dock peut être fermé. |
QDockWidget::DockWidgetMovable | 0x02 | L'utilisateur peut déplacer le widget d'ancrage d'un dock à l'autre. |
QDockWidget::DockWidgetFloatable | 0x04 | Le widget du dock peut être détaché de la fenêtre principale et affiché en tant que fenêtre indépendante. |
QDockWidget::DockWidgetVerticalTitleBar | 0x08 | Le 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::NoDockWidgetFeatures | 0x00 | Le 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.