« Programmation Qt/Les widgets » : différence entre les versions

Contenu supprimé Contenu ajouté
Athozus (discussion | contributions)
ajout des widgets conteneurs et de QFrame
Athozus (discussion | contributions)
→‎Les widgets conteneurs : ajout de QTabWidget
Ligne 190 :
</syntaxhighlight>Ensuite, pour les widgets enfants, un <code>setLayout(monLayout);</code> qui contient lui-même des widgets.
 
=== <code>QTabWidget</code> : un conteneur à onglets ===
{{AutoCat}}
Un <code>QTabWidget</code> est un conteneur à onglets. Il ne peut y avoir qu'un seul widget par onglets. Heureusement, un widget peut en contenir un autre, autrement dit vous pouvez mettre un [[Programmation Qt/Le positionnement des widgets|layout]] qui contient tous les widgets que vous voulez.<syntaxhighlight lang="c++" line="1" start="1">
QTabWidget *onglets = new QTabWidget();
 
QWidget *pageAccueil = new QWidget();
 
QLabel *bienvenue = new QLabel("Bienvenue à tous");
QPushButton *boutonQuitter = new QPushButton("Quitter");
this::connect(boutonQuitter, SIGNAL(clicked()), qApp, SLOT(quit()));
 
QVBoxLayout *layout = new QVBoxLayout();
layout->addWidget(bienvenue);
layout->addWidget(boutonQuitter);
 
pageAccueil->setLayout(layout);
 
QLabel *image = new QLabel();
image->setPixmap(QPixmap("monImage.png"));
 
onglets->addTab(pageAccueil, "Accueil");
onglets->addTab(image, "Image");
</syntaxhighlight>Ce code affiche :
 
* un onglet Accueil qui contient le texte de bienvenue et le bouton Quitter.
* un onglet Image qui contient une image
 
Vous pouvez aussi mettre des <code>QTabWidget</code> dans des <code>QTabWidget</code> :<syntaxhighlight lang="c++" line="1" start="1">
QTabWidget *univers = new QTabWidget();
QTabWidget *systemeSolaire = new QTabWidget();
 
QWidget *pageSoleil = new QWidget();
QWidget *pageMercure = new QWidget();
QWidget *pageEtc = new QWidget();
 
systemeSolaire->addTab(pageSoleil, "Soleil");
systemeSolaire->addTab(pageMercure, "Mercure");
systemeSolaire->addTab(pageEtc, "...");
 
univers->addTab(systemeSolaire, "Système solaire")
</syntaxhighlight>{{AutoCat}}