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