"""QStackedWidget qui s'adapte a la hauteur de sa page courante. Par defaut, QStackedWidget dimensionne son sizeHint() sur sa PLUS GRANDE page, meme quand une page plus petite (ou vide) est affichee - pense pour eviter qu'un dialogue ne saute de taille en changeant de page. Ici on veut au contraire un dialogue qui suit sa page courante : utilise pour les blocs Bastion/Jump Host (session_dialog.py, group_settings_dialog.py), ou la page "Aucun" est vide mais la page "Configuration manuelle" a 5 champs - sans ce correctif, un grand espace vide reste reserve sous la page vide. """ from __future__ import annotations from PySide6.QtWidgets import QStackedWidget class AutoHeightStackedWidget(QStackedWidget): def sizeHint(self): return self.currentWidget().sizeHint() def minimumSizeHint(self): return self.currentWidget().minimumSizeHint() def setCurrentIndex(self, index: int) -> None: super().setCurrentIndex(index) # previent le parent (le dialogue) que sizeHint() a change, sans quoi # il ne redemande pas immediatement la nouvelle taille au changement # de page. self.updateGeometry() window = self.window() if window is not None: window.adjustSize()