« Programmation Qt/Le positionnement des widgets » : différence entre les versions

Contenu supprimé Contenu ajouté
Athozus (discussion | contributions)
m →‎Combiner les layouts : + exemple avant de mettre le code
Athozus (discussion | contributions)
Revue du texte
Ligne 16 :
Malheureusement, le positionnement absolu comporte des défauts. Essayez de redimensionner la fenêtre pour qu'elle soit la plus petite possible. Votre widget va se couper, ou bien, si vous faites une trèèès petite fenêtre, va disparaître ! C'est pour cela que nous allons découvrir un nouveau positionnement, le positionnement relatif.
 
<small><u>Note{{Information :</u>(Espace principal)|Si vous utilisez la méthode <code>setFixedSize()</code>, vous pouvez utiliser le positionnement absolu. C'est comme cela que fonctionne certains jeux.</small>}}
 
== Le positionnement relatif ==
Ligne 62 :
 
=== <code>QGridLayout</code> : un layout en grille ===
{{Question|C'est bien gentil, mais comment pourrais-je faire quand j'aurais beaucoup de widgets ?}}
Intéressants, les deux au-dessus, mais plus tard, vous aurez forcément besoin d'un layout en grille. C'est là qu'intervient <code>QGridLayout</code> : un layout en grille, comme le schéma du principe des layouts plus haut dans la page. Notre belle méthode <code>addWidget()</code> va se transformer :<syntaxhighlight lang="c++" line="1" start="1">
QPushButton *wi = new QPushButton("Wi"); /* Création des boutons */
QPushButton *ki = new QPushButton("ki");
Ligne 76 ⟶ 77 :
QWidget *m_page = new QWidget();
m_page->setLayout(m_layout);
</syntaxhighlight>Les deux premiers boutons sont tous les deux en haut, l'un à gauche et l'autre à droite. Mais le troisième bouton, lui est entièrement en bas car nous avons inséré deux nouveaux chiffres : <code>rowSpan</code> et <code>columnSpan</code>. On dit donc que le widget doit prendre 1 ligne en hauteur et 2 colonnes en hauteur. En réalité, il existe, comme on peut le voir dans la documentation, deux méthodes <code>addWidget()</code>. La première accepte le widget à insérer, puis les coordonnées. La deuxième, quant à elle, accepte le widget, la position <code>x</code>, la position <code>y</code>, la hauteur (<code>rowSpan</code>) et la largeur (<code>columnSpan</code>).
 
=== <code>QFormLayout</code> : un layout pour formulaire ===
Ligne 95 ⟶ 96 :
 
=== Combiner les layouts ===
{{Question|Et comment je fais si je veux mettre un bouton Quitter à mon formulaire ?}}
C'est vite lassant un layout par programme. Imaginez un formulaire : on peut utiliser le layout adapté <code>QFormLayout</code>, mais pour mettre un bouton “Quitter”, et bien là, c'est compliqué. C'est pour cela qu'on peut les combiner !<syntaxhighlight lang="c++" line="1" start="1">
C'est pour cela qu'on peut les combiner ! Et c'est ce principe là, qui fait la force des layouts. Ainsi, vous pouvez disposer vos widgets partout dans la page quelques soient vos envies.<syntaxhighlight lang="c++" line="1" start="1">
QLineEdit *nom = new QLineEdit();
QLineEdit *prenom = new QLineEdit();