Partage

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();
}




Vous êtes demandeur d'emploi ?
Sans diplôme post-bac ?

Devenez Développeur web junior

Je postule
Formation
en ligne
Financée
à 100%
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 * ?

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...

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 ;)
Toujours plus
25 août 2018 à 0:12:51

Ouai peut-être

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

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