IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Comment utiliser correctement QDialog à partir d'une QMainWindow ?


Sujet :

Qt

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Comment utiliser correctement QDialog à partir d'une QMainWindow ?
    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

  2. #2
    Candidat au Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Alimentation

    Informations forums :
    Inscription : Janvier 2019
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Puisque tu veux apprendre les bonnes pratiques, déjà je te conseillerais d'écrire du code en anglais et au pire si tu décides vraiment de pas l'écrire en anglais (ce qui est une mauvaise façon de faire selon moi), je te conseillerais de t'en tenir à une seule langue, parce que tu as des noms de fonction en anglais et en français,

    En outre en ce qui concerne la créations des dialog, selon moi, y'a pas vraiment de pratiques toujours éfficaces, je pense qu'il faut juste conserver en tête la logique des Qdialog qui est de fournir une interface de communication éffémère entre l'utilisation et l'application. mais à part les points soulignés plus haut Je ne trouve pas ton code si mauvais.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup pour ta réponse PivotDeGauss.

    Pour ce qui est des instances de classe, je les nomme en général de façon explicite et en français. Je ne suis pas doué pour les langues donc je ne promets pas de laisser une place plus importante à l'anglais, en tout cas en ce qui concerne les désignations d'instance.
    Pour ce qui est des classes, je donne juste un nom que je comprends facilement à mes classes personnalisées.
    Pour les méthodes, j'utilise aussi un français explicite.

    Encore merci PivotDeGauss d'avoir fait l'effort de me répondre.

    Je te souhaite une bonne soirée,

    Gilliann

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/02/2012, 15h22
  2. Comment faire du MDX à partir d'une requete SQL?
    Par Immobilis dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 10/11/2005, 09h46
  3. Comment utiliser correctement le debugger de DevCPP
    Par Le Furet dans le forum Dev-C++
    Réponses: 2
    Dernier message: 29/09/2005, 09h56
  4. Comment utiliser un query à partir d'un timedatepicker ?
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 10
    Dernier message: 24/08/2005, 17h20
  5. [DOM] Comment creer un DOM à partir d une String
    Par RolandB dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 24/04/2005, 18h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo