Toutefois, les redimensionnements de la fenêtre donnent lieu aussi à quelques
bizarreries : lors d'un étirement horizontal, le bouton OK s'élargit pour prendre toute la
place disponible ; lors d'un étirement vertical, les éléments se placent au 1/3 et au 2/3
de la hauteur de la fenêtre. Toutes ces caractéristiques, qu'elles soient agréables ou
non, ont en fait la même cause : sans autres indications, les éléments placés dans les
positionneurs sont appelés à occuper au maximum l'espace disponible. Chaque
QLayout définit les tailles et positions selon des règles définies, mais aussi selon des
attributs que vous pouvez modifier. Tout ceci est puissant mais requiert une certaine
expertise.
PyQt offre heureusement une technique beaucoup simple pour corriger ces petits
défauts : les espaceurs. Un espaceur est une instance de la classe QSpacerItem ; c'est
un objet rectangulaire qu'on peut placer dans un QLayout et qui a la caractéristique
amusante… d'être invisible ! En fait, son seul but est de grossir, c'est-à-dire d'occuper
l'espace qui pourrait être pris par les composants voisins. On peut aussi le voir comme
un ressort qui va pousser les composants visuels pour qu'ils présentent au mieux, quelle
que soit la dimension de la fenêtre.
Concrétisons tout cela sur notre exemple. On va :
ajouter un espaceur au milieu du QVBoxLayout : ceci aura pour effet de pousser le
bouton OK en bas de la fenêtre ;
ajouter deux espaceurs de part et d'autre du bouton OK dans un nouveau
QHBoxLayout : ceci aura pour effet de centrer le bouton et de l'empêcher de
s'élargir.
Figure 5.9 : Mise en page 2 avec QLayout et espaceurs
81
Précédent

- 82/494

Suivant