====== 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