Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exercice sur les boîtes de dialogue usuelles

    17 août 2018 à 21:59:18

    Bonjour,

    Dans le chapitre 5 "Les boîtes de dialogue usuelles" de la partie sur QT Créator un exercice est proposé pour afficher au niveau du nom du bouton m_boutonDialogue de la fenêtre principale le texte saisi dans la boîte de dialogue qui s'ouvre quand on clique dessus. Pour ce faire j'ai pondu ce code qui compile et affiche la fenêtre et les boîtes de dialogue correctement quand on clique par contre le texte saisi par l'utilisateur n'est pas pris en compte pour renommer le bouton de la fenêtre.

    Quelqu'un peut-il me dire ce qui ne va pas dans ce code ?

    Voici mon header .h

    #ifndef DEF_MAFENETRE
    #define DEF_MAFENETRE
    
    #include <QApplication>
    #include <QWidget>
    #include <QPushButton>
    #include <QMessageBox>
    #include <QInputDialog>
    
    class MaFenetre : public QWidget
    {
        Q_OBJECT
    
        public:
        MaFenetre(QString *);
    
        public slots:
        QString ouvrirDialogue();
    
        private:
        QPushButton *m_boutonDialogue;
        QString *pseudo;
    };
    
    #endif

    Voici le fichier .cpp

    #include "mafenetre.h"
    
    MaFenetre::MaFenetre(QString *pseudo) : QWidget()
    {
        setFixedSize(330, 120);
    
    //    m_boutonDialogue = new QPushButton("Ouvrir la boîte de dialogue", this);
        m_boutonDialogue = new QPushButton(*pseudo, this);
    
        m_boutonDialogue->move(80, 50);
    
        QObject::connect(m_boutonDialogue, SIGNAL(clicked()), this, SLOT(ouvrirDialogue()));
    }
    
    QString MaFenetre::ouvrirDialogue()
    {
        bool ok = false;
        QString pseudo = QInputDialog::getText(this, "Pseudo", "Quel est votre pseudo ?", QLineEdit::Normal, QString(), &ok);
    
        if (ok && !pseudo.isEmpty())
        {
            QMessageBox::information(this, "Pseudo", "Bonjour " + pseudo + ", ça va ?");
        }
        else
        {
            QMessageBox::critical(this, "Pseudo", "Vous n'avez pas voulu donner votre nom… snif.");
        }
        return (pseudo);
    }

    Et le main :

    #include <QApplication>
    #include <QTranslator>
    #include <QLocale>
    #include <QLibraryInfo>
    #include "MaFenetre.h"
    
    
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
    
        QString pseudo_init="Ouvrir la boîte de dialogue";
    
        QString locale = QLocale::system().name().section('_', 0, 0);
        QTranslator translator;
        translator.load(QString("qt_") + locale, QLibraryInfo::location(QLibraryInfo::TranslationsPath));
        app.installTranslator(&translator);
    
        MaFenetre fenetre(&pseudo_init);
        fenetre.show();
    
        return app.exec();
    }
    




    • Partager sur Facebook
    • Partager sur Twitter
      20 août 2018 à 14:36:24

      Salut, dans ta fonction "ouvrirDialogue" tu stock le résultat dans une variable pseudo puis tu la retourne. Mais à aucun endroit tu récupère ta valeur de sortie.

      Autre chose qui m'intrigue, pourquoi tu passes tes QString en QString * ?

      • Partager sur Facebook
      • Partager sur Twitter
      Toujours plus
        21 août 2018 à 22:55:38

        Merci pour ta réponse.

        Je pensais que pour que le code tourne comme il faut il fallait passer la valeur du QString par référence mais en fait il n'en est rien.

        Cela m'énerve je ne trouve pas la solution au problème. Je décide d'arrêter cela et de passer à autre choses...

        • Partager sur Facebook
        • Partager sur Twitter
          22 août 2018 à 9:41:04

          Tu peux stocker directement ta variable pseudo dans ta classe comme tu l'as déjà fait, et dans ta fonction ouvrirdialogue changer directement le pseudo de ta classe ;)
          • Partager sur Facebook
          • Partager sur Twitter
          Toujours plus
            25 août 2018 à 0:12:51

            Ouai peut-être

            ça serait mieux si tu me filais du code vois-tu !...

            • Partager sur Facebook
            • Partager sur Twitter

            Exercice sur les boîtes de dialogue usuelles

            × 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.
            • Editeur
            • Markdown