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