« Programmation Qt/La fenêtre principale » : différence entre les versions

Contenu supprimé Contenu ajouté
Athozus (discussion | contributions)
m →‎Les docks : + déplacement docks
Athozus (discussion | contributions)
→‎L'espace principal : + SDI, MDI
Ligne 61 :
</syntaxhighlight>On vient donc d'insérer un dock qui sera placé à gauche de la fenêtre. Pour ajouter plusieurs widgets dans un même dock, on peut utiliser un layout puis la méthode <code>setLayout()</code> de la classe <code>QDockWidget</code>. Bien évidemment, l'utilisateur pour en faire une fenêtre à par entière qu'il pourra ensuite remettre autant à gauche qu'à droite.
 
=== L'espace principal ===
Pour l'espace principal, il y a deux choix : un SDI, c'est-à-dire une seule fenêtre dans la fenêtre, ou un MDI, c'est-à-dire plusieurs fenêtres qui vont se glisser dans le cadre principal.
 
==== SDI ====
Pour créer un SDI (''Single Document Interface''), c'est très simple. Vous créez un widget conteneur (souvent un <code>QWidget</code>), puis vous utilisez la méthode <code>setCentralWidget()</code>, qui accepte votre conteneur.
 
==== MDI ====
Pour l'espace MDI (''Multiple Document Interface''), c'est un peu différent. Voici un exemple :<syntaxhighlight lang="c++" line="1" start="1">
QMdiArea *zoneMDI = new QMdiArea();
 
QPushButton *button = new QPushButton();
QDateEdit *dateEdit = new QDateEdit();
 
QMdiSubWindow *mdiSubWindow1 = zoneMDI->addSubWindow(button);
QMdiSubWindow *mdiSubWindow2 = zoneMDI->addSubWindow(dateEdit);
 
setCentralWidget(zoneMDI);
</syntaxhighlight>Effectivement, nous utilisons le principe du SDI car on remarque <code>setCentralWidget()</code>. Pour notre MDI, la fenêtre n'a pas ses “propres” outils pour en créer, mais on utilise la classe <code>QMdiArea</code> qui contiendra des <code>QMdiSubWindow</code>, qu'on ajoute avec la méthode <code>addSubWindow()</code> d'une <code>QMdiArea</code>. Ces <code>QMdiSubWindow</code> contiendront les widgets de la sous-fenêtre.
{{A RetenirBlender|* Pour créer un SDI, on utilise un widget simple qu'on ajoute avec <code>setCentralWidget()</code>.
* Pour créer un MDI, on utilisera un widget <code>QMdiArea</code>, qui contiendra des <code>QMdiSubWindow</code>, qui seront ajoutés avec la méthode <code>addSubWindow()</code>.}}
{{AutoCat}}