Il y a plusieurs points à noter dans ce listing :
visuellement, les éléments s'ajoutent de gauche à droite pour les QHBoxLayout et
de bas en haut pour les QVBoxLayout ;
il y a deux méthodes différentes selon le type d'objet qu'on veut ajouter (widget ou
positionneur) : respectivement addWidget et addLayout ;
le positionneur de plus haut niveau est créé en spécifiant en argument le widget
qu'il gouverne : QVBoxLayout(self.centralWidget) dans l'exemple.
À l'exécution, on peut voir que les choses se présentent comme spécifiées. De plus, et
c'est là un gain substantiel, quand on change la taille de la fenêtre principale, par
exemple en faisant glisser ses coins, les éléments s'adaptent automatiquement.
Figure 5.8 : BiblioApp v0.03
Attention > La hiérarchie de QLayout montrée ici ne doit pas être confondue avec la
hiérarchie de QWidget, expliquée à la Section 2, Fenêtre principale : la classe
QMainWindow. C'est une erreur fréquente chez les débutants en PyQt ! Soulignons,
par exemple, que self.label (qu'on a placé dans un QHBoxLayout) n'a qu'un parent,
qui est et reste self.centralWidget. Les deux hiérarchies coexistent sans interférer. Les
QLayout ne sont pas des widgets, ils ne sont d'ailleurs pas visibles à l'exécution ; ils
sont juste des directives invisibles pour placer les widgets enfants sur leur widget
parent. C'est un peu déroutant au début mais, en définitive, c'est cohérent et on s'y
fait vite !
On voit l'intérêt de cette technique pour l'utilisateur : le champ textuel s'étend à mesure
que la fenêtre est étirée horizontalement, ce qui est un gain en terme d'ergonomie.
80
Précédent

- 81/494

Suivant