Outils pour utilisateurs

Outils du site


Panneau latéral

qdockwidget

QDockWidget

Un dock est un widget dont la position dans la fenêtre principale peut varier au cours de l'execution du programme, sous l'action de l'utilisateur.

Il y a plusieurs enjeux autour d'un dock : la mise en place initiale (avec éventuellement des restrictions sur les actions possibles de l'utilisateur), gérer le layout des widgets enfants lorsque le dock change de position

Mise en place initiale

Liste d'attributs et de fonctions utiles :

# self = dock_widget 
self.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.TopDockWidgetArea)
self.setFloating(False)
self.setFeatures(QDockWidget.NoDockWidgetFeatures)
self.setFeatures(QDockWidget.DockWidgetMovable)
self.setTitleBarWidget(QLabel("red"))
 
# Contenu du dock = un autre widget (ex: controls) qui a un layout
self.setWidget(controls)

pour intégrer ce widget dans la fenetre principale :

self.main_window.setCentralWidget(self.central_widget)
self.main_window.addDockWidget(Qt.LeftDockWidgetArea, self.controls_dock)  # Qt.LeftDockWidgetArea ou Qt.TopDockWidgetArea

Gérer le layout en fonction de la position

On peut connecter le signal dockLocationChanged du dock à une fonction personnalisée pour mettre à jour le layout.

current_area = self.main_window.dockWidgetArea(self.controls_dock)  # Left = 1    Top = 4
if current_area == Qt.LeftDockWidgetArea:
    # Faire quelque chose
    ...
    # avec un layout vertical ou horizontal 
    # création : layout = QVBoxLayout()
    ...
    dock.widget_enfant.layout.setDirection(QBoxLayout.LeftToRight)  # ou TopToBottom
 
qdockwidget.txt · Dernière modification: 2023/10/05 06:26 de luc