Les agencements (Layouts)¶
1. Types de Layouts dans Qt¶
Les layouts permettent d’organiser les widgets de manière dynamique (adaptative au redimensionnement).
A. QVBoxLayout (Vertical)¶
- Description : Dispose les widgets verticalement (les uns en dessous des autres).
- Exemple :
B. QHBoxLayout (Horizontal)¶
- Description : Dispose les widgets horizontalement (les uns à côté des autres).
- Exemple :
C. QGridLayout (Grille)¶
- Description : Dispose les widgets dans une grille (lignes/colonnes).
- Exemple :
D. QFormLayout (Formulaire)¶
- Description : Dispose les widgets comme un formulaire (étiquette + champ).
- Exemple :
E. QStackedLayout (Piles)¶
- Description : Affiche un seul widget à la fois (comme des onglets).
- Exemple :
F. QSplitter (Séparateurs)¶
- Description : Permet de redimensionner manuellement les zones.
- Exemple :
2. Tableau Récapitulatif¶
| Layout | Description | Exemples d’utilisation typiques |
|---|---|---|
QVBoxLayout |
Widgets empilés verticalement | Menus, listes, formulaires simples |
QHBoxLayout |
Widgets alignés horizontalement | Barres d’outils, en-têtes de tableau |
QGridLayout |
Grille (lignes/colonnes) | Tableaux, grilles de boutons |
QFormLayout |
Formulaire (étiquette + champ) | Paramètres, configurations |
QStackedLayout |
Piles (un widget visible à la fois) | Onglets, vues dynamiques |
QSplitter |
Zones redimensionnables | Editeurs de code, visualisateurs de données |
3. Exemple Combiné¶
Pour combiner plusieurs layouts :
# Layout principal (vertical)
main_layout = QVBoxLayout()
main_layout.addWidget(QLabel("Titre"))
# Sous-layout horizontal pour les boutons
button_layout = QHBoxLayout()
button_layout.addWidget(QPushButton("OK"))
button_layout.addWidget(QPushButton("Annuler"))
main_layout.addLayout(button_layout) # Ajoute le sous-layout au principal
Remarques¶
- Les layouts peuvent être imbriqués (ex: un
QVBoxLayoutcontenant unQHBoxLayout). - Utilisez
addStretch()pour ajouter de l’espace élastique. - Pour des interfaces complexes, combinez plusieurs types de layouts.