Partage
  • Partager sur Facebook
  • Partager sur Twitter

Qt4: Récupérer la valeur de retour de la boîte de dialogu

QInputDialog::getInteger

Sujet résolu
    1 juin 2008 à 17:15:16

    Bonjour,

    Bravo au cours de M@teo sur les boites de dialogue usuelles.

    Q: Je n'arrive pas à afficher la valeur de retour (un entier) dans la boîte de dialogue QMessageBox::information.
    J'ai beau chercher dans la doc de Qt, mais je n'ai pas trouvé.

    // MaFenetre.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();
    		
    	public slots:
    		void ouvrirDialogue();
    		
    		
        private:
    		QPushButton *m_boutonInputNumEntier;
    	};
    
    #endif
    


    //MaFenetre.cpp
    
    #include "MaFenetre.h"
    
    MaFenetre::MaFenetre() : QWidget()
    {
        setFixedSize(400, 500);
    
    	m_boutonInputNumEntier = new QPushButton("Ouvrir la boite input num entier", this); 
    	m_boutonInputNumEntier->move(50, 300);
    	
    	QObject::connect(m_boutonInputNumEntier, SIGNAL(clicked()), this, SLOT(ouvrirDialogue()));
    }
    
    void MaFenetre::ouvrirDialogue()
    {
    	bool ok ;
    	int entier = QInputDialog::getInteger(this, "Nombre", "Entrez un nombre entier", 25, -200, 100, 25, &ok);
    	if (ok)
    	{
    		// Ligne suivante ne marche pas!
    		QMessageBox::information(this, "Nombre Entier", "Chiffre: " + entier + ", ");
    	}
    	else
    	{
    		QMessageBox::critical(this, "Nombre Entier", "Vous n'avez pas voulu changer de nombre ... snif ... snif......");
    	}
    }
    


    // main.cpp
    
    #include <QApplication>
    #include <QTranslator> 
    #include <QLocale>
    #include <QLibraryInfo>
    #include "MaFenetre.h"
    #include <QTextCodec> // intégration des accents p.ex é, à, â etc
    
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
    	
    	QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    	QString locale = QLocale::system().name();
        QTranslator translator;
        translator.load(QString("qt_") + locale, QLibraryInfo::location(QLibraryInfo::TranslationsPath));
        app.installTranslator(&translator);
    	
        MaFenetre fenetre;
        fenetre.show();
    	
        return app.exec();
    }
    


    Erreur du compilo:
    MaFenetre.cpp: error: invalid operands of types `const char*' and `const char[3]' to binary `operator+'

    :(Je n'ai évidemment pas trop compris la méthode statique qu'il faut utiliser pour afficher un entier dans QMessageBox::Information

    merci de votre aide ^^
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      1 juin 2008 à 17:18:53

      Tu ne peux pas concaténer de simples const char* et un entier de cette manière.

      Essaie en faisant :

      QMessageBox::information(this, "Nombre Entier", QString("Chiffre: ") + entier + ", ");
      


      EDIT : en effet, minirop a raison. J'avais oublié que la conversion int > QString n'est pas faite :honte: .
      • Partager sur Facebook
      • Partager sur Twitter
        1 juin 2008 à 17:22:54

        il faut transformer ton entier en QString :
        "Chiffre: " + QString::number(entier) + ", "
        
        • Partager sur Facebook
        • Partager sur Twitter
          1 juin 2008 à 17:44:27

          o_O Merci Cyprien_,
          Cela donnait des réponses bizarroïdes comme : Chiffre: K, ...
          Ta piste m'est très utile.
          :D Merci minirop,
          trop fort ça fonctionne.
          Je m'en vais donc regarder QString::number()

          waouw, vous êtes vraiement des rapides !
          • Partager sur Facebook
          • Partager sur Twitter

          Qt4: Récupérer la valeur de retour de la boîte de dialogu

          × 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