Bonjour à toutes et à tous,

novice en programmation, je me permets de poster ce message pour éviter de prendre de mauvaises habitudes dans la gestion des QDialog.

Voici ma façon d'utiliser une QDialog :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
void FenetrePrincipale::MaQDialog()
{
    QLabel *labelTitre = new QLabel;
        labelTitre->setText(tr("Titre de ma QDialog"));
 
    // Saisie des variables
    lineEdit01 = new QLineEdit("");
    lineEdit02 = new QLineEdit("");
    QVBoxLayout *layoutVariables = new QVBoxLayout;
        layoutVariables->addWidget(lineEdit01);
        layoutVariables->addWidget(lineEdit02);
    QGroupBox *boxVariables = new QGroupBox;
        boxVariables->setTitle(tr("Variables à saisir"));
        boxVariables->setLayout(layoutVariables);
 
    // Boutons
    QPushButton *boutonAnnuler = new QPushButton;
        boutonAnnuler->setText("Annuler");
    boutonValider = new QPushButton;
        boutonValider->setText("Valider");
        boutonValider->setToolTip(tr("Aucune variable saisie"));
        boutonValider->setEnabled(false);
 
    // Mise en forme
    QGridLayout *grille = new QGridLayout;
        grille->addWidget(labelTitre,0,0,1,2);
        grille->addWidget(boxVariables,1,0,1,2);
        grille->addWidget(boutonAnnuler,2,0,Qt::AlignLeft);
        grille->addWidget(boutonValider,2,1,Qt::AlignRight);
 
    fenetreNiveau1 = new QDialog(this);
        fenetreNiveau1->setWindowTitle(tr("Ma QDialog"));
        fenetreNiveau1->setModal(true);
        fenetreNiveau1->setLayout(grille);
        fenetreNiveau1->adjustSize();
        fenetreNiveau1->setMinimumSize(fenetreNiveau1->size());
        fenetreNiveau1->show();
 
    connect(lineEdit01, SIGNAL(textChanged(QString)), this, SLOT(VerifVariables()));
    connect(lineEdit02, SIGNAL(textChanged(QString)), this, SLOT(VerifVariables()));
    connect(boutonAnnuler, SIGNAL(clicked(bool)), fenetreNiveau1, SLOT(deleteLater()));
    connect(boutonValider, SIGNAL(clicked(bool)), this, SLOT(ValiderSaisie()));
}
Ce code implique que je mette les 2 QLineEdit en attributs (private ou protected) de ma classe "FenetrePrincipale" ainsi que le bouton "Valider".
A chaque changement effectué sur les QLineEdit, j'effectue une méthode de vérification des variables qui me permet d'activer le bouton "Valider" ou non.
Je précise aussi que je donne des noms explicites aux QLineEdit, ce qui fait que lorsqu'il y a plusieurs traitements de données effectués par des QDialog, ça commence à faire beaucoup d'attributs.
"FenetreNiveau1" est aussi un attribut de "FenetrePrincipale". Une QDialog peut parfois en appelé une autre ("FenetreNiveau2" par exemple).

Cette méthode est fonctionnelle mais je ne suis clairement pas sûr de faire correctement les choses.

Ne connaissant pas de développeurs pour m'aiguiller, je m'adresse à vous.

Je vous remercie d'avance,

Gilliann