Bonjour, en essayant de faire un petit programma graphique j'ai rencontré un problème.
Je n'arrive pas à combiner un Layout avec un GroupBox, du moins pas totalement car le titre que je voudrais donner se met seulement au premier champ alors que j'aimerai qu'il soit pour les deux champs présents. J'ai déjà relu plusieurs fois les chapitres qui concerne ces deux classes. Je vous met une photo et mon code.
#include <QApplication>
#include <QLineEdit>
#include <QPushButton>
#include <QVBoxLayout>
#include <QFormLayout>
#include <QGroupBox>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget fenetre;
QGroupBox *groupbox = new QGroupBox("Nom et prénom !", &fenetre);
// Création du layout de formulaire et de ses widgets
QLineEdit *nom = new QLineEdit;
QLineEdit *prenom = new QLineEdit;
QFormLayout *formLayout = new QFormLayout;
formLayout->addRow("Nom :", nom);
formLayout->addRow("Prénom :", prenom);
// Création du layout principal de la fenêtre (vertical)
QVBoxLayout *layoutPrincipal = new QVBoxLayout;
layoutPrincipal->addLayout(formLayout); // Ajout du layout de formulaire
QPushButton *boutonQuitter = new QPushButton("Quitter");
QWidget::connect(boutonQuitter, SIGNAL(clicked()), &app, SLOT(quit()));
layoutPrincipal->addWidget(boutonQuitter); // Ajout du bouton
groupbox->setLayout(formLayout);
fenetre.setLayout(layoutPrincipal);
fenetre.show();
return app.exec();
}
l'erreur était toute simple : tu as mis le formLayout dans le layoutPrincipal alors que le formLayout était dans la groupbox, il fallait mettre le groupbox dans le layout principal.
Voici le code corrigé :
#include <QApplication>
#include <QLineEdit>
#include <QPushButton>
#include <QVBoxLayout>
#include <QFormLayout>
#include <QGroupBox>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget fenetre;
QGroupBox *groupbox = new QGroupBox("Nom et prénom !", &fenetre);
// Création du layout de formulaire et de ses widgets
QLineEdit *nom = new QLineEdit;
QLineEdit *prenom = new QLineEdit;
QFormLayout *formLayout = new QFormLayout;
formLayout->addRow("Nom :", nom);
formLayout->addRow("Prénom :", prenom);
// Création du layout principal de la fenêtre (vertical)
QVBoxLayout *layoutPrincipal = new QVBoxLayout;
layoutPrincipal->addWidget(groupbox); // Ajout de groupbox dans layoutPrincipal
QPushButton *boutonQuitter = new QPushButton("Quitter");
QWidget::connect(boutonQuitter, SIGNAL(clicked()), &app, SLOT(quit()));
layoutPrincipal->addWidget(boutonQuitter); // Ajout du bouton
groupbox->setLayout(formLayout);
fenetre.setLayout(layoutPrincipal);
fenetre.show();
return app.exec();
}
PS: Mets un pouce bleu sur ma réponse s'il te plaît !
- Edité par AymericSt 4 décembre 2019 à 16:29:11
La programmation, c'est l'art d'exprimer sa créativité !
l'erreur était toute simple : tu as mis le formLayout dans le layoutPrincipal alors que le formLayout était dans la groupbox, il fallait mettre le groupbox dans le layout principal.
Voici le code corrigé :
#include <QApplication>
#include <QLineEdit>
#include <QPushButton>
#include <QVBoxLayout>
#include <QFormLayout>
#include <QGroupBox>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget fenetre;
QGroupBox *groupbox = new QGroupBox("Nom et prénom !", &fenetre);
// Création du layout de formulaire et de ses widgets
QLineEdit *nom = new QLineEdit;
QLineEdit *prenom = new QLineEdit;
QFormLayout *formLayout = new QFormLayout;
formLayout->addRow("Nom :", nom);
formLayout->addRow("Prénom :", prenom);
// Création du layout principal de la fenêtre (vertical)
QVBoxLayout *layoutPrincipal = new QVBoxLayout;
layoutPrincipal->addWidget(groupbox); // Ajout de groupbox dans layoutPrincipal
QPushButton *boutonQuitter = new QPushButton("Quitter");
QWidget::connect(boutonQuitter, SIGNAL(clicked()), &app, SLOT(quit()));
layoutPrincipal->addWidget(boutonQuitter); // Ajout du bouton
groupbox->setLayout(formLayout);
fenetre.setLayout(layoutPrincipal);
fenetre.show();
return app.exec();
}
PS: Mets un pouce bleu sur ma réponse s'il te plaît !
- Edité par AymericSt hier à 16:29
Merci beaucoup je vais pouvoir continuer !
Qt: QGroupBox & QFormLayout
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
La programmation, c'est l'art d'exprimer sa créativité !