Partage
  • Partager sur Facebook
  • Partager sur Twitter

[QT] affichage de variables

Sujet résolu
    28 mai 2008 à 14:35:23

    je voudrais sortir mon texte mais je n'arrive pas a l'afficher en QT



    ifstream fichier("test.txt", ios::in); // on ouvre en lecture

    if(fichier) // si l'ouverture a fonctionné
    {
    QString contenu;
    getline(fichier, contenu); // on met dans "contenu" la ligne
    QMessageBox::information(this, "phrase" + contenu);

    fichier.close();
    }

    je n'arrive pas a afficher le contenu je comprend pas fau-t-il utiliser Qstring ? et comment ? parce que j'ai cherché en essayant divers trucs mais j'arrive pas ca plante a la compilation quand il faut afficher le texte.
    • Partager sur Facebook
    • Partager sur Twitter
      28 mai 2008 à 15:07:00

      Salut, à voir là, sans tester ce code voici la ligne qui me choque:
      <code type=QString contenu;
      getline(fichier, contenu); // on met dans "contenu" la ligne"cpp">
      QMessageBox::information(this, "phrase" + contenu);</code>
      Tu mélanges librairie standard et Qt. La librairie standard ne connaît pas Qt.
      Tu devrais remplacer ces deux lignes par ceci:
      char *c;
      getline(fichier, c);
      QString contenu(c);
      QMessageBox::information(this, QString("phrase") + contenu);
      


      Voilà, ici tu convertis un char* en QString, et ça devrait marcher ;) .
      Au revoir.
      • Partager sur Facebook
      • Partager sur Twitter
        28 mai 2008 à 15:40:44

        regarde le code complet
        (intéresse toi seulement si tu le veut bien a la fin du MaFenetre.cpp le début marche a coup sur) (et pour les #include je sais pas exactement ce qu'il faut mettre au .h, ce qu'il faut mettre au(x) .cpp)

        (Je fais un ptit jeu de tables de multiplication pour mon ptit frere et ma ptite soeur)



        #include "MaFenetre.h"
        #include <time.h>
        #include <fstream>
        #include <iostream>
        #include <string>
        
        using namespace std;
        
        
        MaFenetre::MaFenetre() : QWidget()
        {
            setFixedSize(500, 300);
        
        
        
            srand(time(NULL));
        
            m_boutonDialogue = new QPushButton("Commencer les tables de multiplication.", this);
            m_boutonDialogue->move(200, 100);
        
        
            QObject::connect(m_boutonDialogue, SIGNAL(clicked()), this, SLOT(ouvrirDialogue()));
        }
        
        
        
        
        void MaFenetre::ouvrirDialogue()
        {
        
            QMessageBox::warning(this, "Préparez vous", "Préparez vopus a commencer les \ntables de multiplication.");
            int i = 0;
            double elapsed = 0;
            clock_t start, end;
            start = clock();
        
            while (i != 10) // tant que les 10 multiplications ne sont pas faites
            {
                int nombre1 = 1 + (int)((double)rand() / ((double)RAND_MAX + 1) * 12); // tire deux nombres au hazard
                int nombre2 = 1 + (int)((double)rand() / ((double)RAND_MAX + 1) * 12);
                int nb_correct = nombre1*nombre2;
                int nombre = QInputDialog::getInteger(this, "Nombre", QString().number(nombre1) + " X " + QString().number(nombre2) + " ?");
        
                while (nombre != nb_correct)
                {
                    QMessageBox::critical(this, "Erreur", "Erreur !");
                    nombre = QInputDialog::getInteger(this, "Nombre", QString().number(nombre1) + " X " + QString().number(nombre2) + " ?");
                }
        
                i ++;
            }
        
            end = clock();
            elapsed = ((double)end - start) / CLOCKS_PER_SEC;
        
            QMessageBox::information(this, "Temps", "Ton temps est de " + QString().number(elapsed) + " secondes.");
        
        
                ifstream fichier("test.txt", ios::in);  // on ouvre en lecture
        
                if(fichier)  // si l'ouverture a fonctionné
                {
                    char *c;
                        getline(fichier, c);
                        QString contenu(c);
                        QMessageBox::information(this, QString("phrase") + contenu);
        
                        fichier.close();
                }
        
        }
        




        #include <QApplication>
        #include <QPushButton>
        #include <QWidget>
        #include <QFont>
        #include <QIcon>
        #include <QMessageBox>
        #include <Qstring>
        #include "MaFenetre.h"
        #include <fstream>
        #include <iostream>
        #include <string>
        
        using namespace std;
        
        int main(int argc, char *argv[])
        {
            QApplication app(argc, argv);
        
            MaFenetre fenetre;
            fenetre.show();
        
        
            return app.exec();
        }
        







        #ifndef MAFENETRE_H_INCLUDED
        #define MAFENETRE_H_INCLUDED
        
        #include <QApplication>
        #include <QWidget>
        #include <QPushButton>
        #include <QMessageBox>
        #include <QInputDialog>
        #include <QApplication>
        #include <QPushButton>
        #include <QWidget>
        #include <QFont>
        #include <QIcon>
        #include <Qstring>
        #include <QMessageBox>
        #include <fstream>
        #include <iostream>
        #include <string>
        
        class MaFenetre : public QWidget
        {
            Q_OBJECT
        
            public:
            MaFenetre();
            int nombre1, nb_correct, nombre2, nombre, i;
            double elapsed;
            QString contenu;
            char *c;
        
            public slots:
            void ouvrirDialogue();
        
            private:
            QPushButton *m_boutonDialogue;
        };
        
        #endif // MAFENETRE_H_INCLUDED
        




        voila je comprend toujours pas

        erreur :
        <a href="http://www.casimages.com"><img src="http://nsa02.casimages.com/img/2008/05/28/0805280343313456861.jpg" alt="Image hébergée par Casimages.com : votre hébergeur d images simple et gratuit" border="0"/></a>
        • Partager sur Facebook
        • Partager sur Twitter
          28 mai 2008 à 15:44:29

          Où est ton problème?
          • Partager sur Facebook
          • Partager sur Twitter
            28 mai 2008 à 16:14:44

            Pour cette ligne, j'avais oublié qu'il fallait mettre 3 paramètres alors essaie ceci:
            QMessageBox::information(this, QString("le titre"),QString("phrase") + contenu);
            

            Voilà

            EDIT: pour afficher une image tu as cette balise:
            <image></image>
            
            et tu mets l'adresse au milieu.
            • Partager sur Facebook
            • Partager sur Twitter
              28 mai 2008 à 17:03:42

              merci pour le code image

              Citation : MaFenetre.cpp

              ifstream fichier("test.txt", ios::in); // on ouvre en lecture

              if(fichier) // si l'ouverture a fonctionné
              {
              char *c;
              getline(fichier, c);
              QString contenu(c);
              QMessageBox::information(this, QString("le titre"),QString("phrase") + contenu);

              fichier.close();
              }




              donc j'ai écrit ca et ca me fait ca a la compilation (le probleme a pas l'air terrible vu ce qu'il marque je comprends ou est l'erreur mais j'arrive pas a comprendre quelle est cette erreur ^^)

              <image>
              <a href="http://www.casimages.com/img.php?i=0805280502143457792.jpg">http://www.casimages.com/img.php?i=080 [...] 143457792.jpg</a>
              </image>

              http://www.casimages.com/img.php?i=080 [...] 143457792.jpg

              je comprends pas comment tu l'affiche pourtant j'ai bien mis mon adresse entre <image> et </image>
              • Partager sur Facebook
              • Partager sur Twitter
                28 mai 2008 à 19:23:38

                C'est normal, la balise a, a tout fai foirer, fais ceci:
                <image>http://www.casimages.com/img.php?i=080143457792.jpg</image>
                

                regarde:<image>http://www.casimages.com/img.php?i=080143457792.jpg</image>
                • Partager sur Facebook
                • Partager sur Twitter
                  28 mai 2008 à 19:26:41

                  Le message qui suit est une réponse automatique activée par un modérateur.
                  Les réponses automatiques permettent d'éviter aux modérateurs d'avoir à répéter de nombreuses fois la même chose, et donc de leur faire gagner beaucoup de temps.
                  Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter le modérateur en question par MP.


                  Merci d'utiliser les balises de code


                  Bonjour,

                  Les forums du Site du Zér0 disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source.
                  Vous avez posté un code source sans utiliser cette fonctionnalité. Pourriez-vous éditer votre message en entourant votre code des balises <code > et </code > ?

                  Cela aura pour effet de "colorer" votre code et donc d'en faciliter grandement la lecture. Vous aurez ainsi beaucoup plus de chances d'avoir des réponses.

                  Voici un exemple de code non coloré avec la balise "citation" (mauvais exemple) :

                  Citation

                  int main(int argc, char *argv[])
                  {
                  long choixOperation;

                  printf("Choisissez l'operation a effectuer");
                  /* etc. */
                  }



                  Voici maintenant le même code coloré, si vous aviez utilisé la balise "code" (bon exemple) :

                  int main(int argc, char *argv[])
                  {
                      long choixOperation;
                  
                      printf("Choisissez l'operation a effectuer");
                      /* etc. */
                  }
                  


                  C'est plus clair n'est-ce pas ? :)
                  N'hésitez pas à éditer votre message pour changer la balise afin de colorer votre code.

                  Plus d'informations à ce sujet


                  Merci de votre compréhension :)
                  Les modérateurs.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  If you'd like to join us, read "How do we work at OpenClassrooms"! :)

                    28 mai 2008 à 19:34:24

                    ben ca l'a pas affichée l'image j'ai copié l'adresse de l'image mais ca a pas marché

                    bon je vais changer le code pr la lisibilité

                    • Partager sur Facebook
                    • Partager sur Twitter
                      28 mai 2008 à 19:44:25

                      bah je crois qu'il faut le signaler ça doit être un bug
                      • Partager sur Facebook
                      • Partager sur Twitter
                        30 mai 2008 à 17:19:48

                        ok et sinon tu as trouvé pour mon probleme QT ?


                        pour le bug c'est peut etre le site qui bug ;)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          31 mai 2008 à 18:37:30

                          alors quand je veut compiler mon projet ca marque
                          C:\Qt\projets\test>qmake
                          
                          C:\Qt\projets\test>make
                          mingw32-make -f Makefile.Release
                          mingw32-make[1]: Entering directory `C:/Qt/projets/test'
                          g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT
                          -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS
                          _QMAIN -I"..\..\4.4.0\include\QtCore" -I"..\..\4.4.0\include\QtCore" -I"..\..\4.
                          4.0\include\QtGui" -I"..\..\4.4.0\include\QtGui" -I"..\..\4.4.0\include" -I"." -
                          I"c:\Qt\4.4.0\include\ActiveQt" -I"release" -I"." -I"..\..\4.4.0\mkspecs\win32-g
                          ++" -o release\MaFenetre.o MaFenetre.cpp
                          MaFenetre.cpp: In member function `void MaFenetre::ouvrirDialogue()':
                          MaFenetre.cpp:64: error: no matching function for call to `getline(std::ifstream
                          &, char*&)'
                          mingw32-make[1]: *** [release/MaFenetre.o] Error 1
                          mingw32-make[1]: Leaving directory `C:/Qt/projets/test'
                          mingw32-make: *** [release] Error 2
                          
                          C:\Qt\projets\test>
                          • Partager sur Facebook
                          • Partager sur Twitter
                            31 mai 2008 à 21:54:00

                            c'est getline ou getLine déjà, je m'en souvient plus ^^
                            • Partager sur Facebook
                            • Partager sur Twitter
                              31 mai 2008 à 22:48:58

                              quand je met getLine avec la majuscule ca me marque

                              C:\Qt\projets\test>qmake
                              
                              C:\Qt\projets\test>make
                              mingw32-make -f Makefile.Release
                              mingw32-make[1]: Entering directory `C:/Qt/projets/test'
                              g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT
                              -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS
                              _QMAIN -I"..\..\4.4.0\include\QtCore" -I"..\..\4.4.0\include\QtCore" -I"..\..\4.
                              4.0\include\QtGui" -I"..\..\4.4.0\include\QtGui" -I"..\..\4.4.0\include" -I"." -
                              I"c:\Qt\4.4.0\include\ActiveQt" -I"release" -I"." -I"..\..\4.4.0\mkspecs\win32-g
                              ++" -o release\MaFenetre.o MaFenetre.cpp
                              MaFenetre.cpp: In member function `void MaFenetre::ouvrirDialogue()':
                              MaFenetre.cpp:64: error: `getLine' was not declared in this scope
                              MaFenetre.cpp:64: warning: unused variable 'getLine'
                              mingw32-make[1]: *** [release/MaFenetre.o] Error 1
                              mingw32-make[1]: Leaving directory `C:/Qt/projets/test'
                              mingw32-make: *** [release] Error 2
                              
                              C:\Qt\projets\test>
                              • Partager sur Facebook
                              • Partager sur Twitter
                                3 juin 2008 à 18:44:27

                                quelqu'un a-t-il une réponse ???
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  15 juin 2008 à 20:30:29

                                  Citation : hilnius

                                  #include <QMessageBox>
                                  #include <Qstring>
                                  #include "MaFenetre.h"
                                  


                                  je mettrai plutot :
                                  #include <QMessageBox>
                                  #include <QString> //et non pas Qstring
                                  #include "MaFenetre.h"
                                  


                                  Mais pour l'autre si la foncyion n'attend pas un pointeur tu devrai mettre un & devant le c (enfin je pense).
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    20 juin 2008 à 12:56:02

                                    Pour transformer une chaine en QString tu fait
                                    QString::fromLatin1(chaine)
                                    
                                    Ya aussi une fonction inverse
                                    char chaine[5000];
                                    chaine = maQStringPerso.toLatin1();
                                    

                                    Après je me suis jamais penché sur les objets string donc je sais pas si ça marche sinon voir la doc...
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      20 juin 2008 à 13:45:20

                                      merci mais j'avais résolu le probleme depuis pas mal de temps
                                      ( il y a une fonction dans la doc de QT qui explique comment le faire)
                                      donc j'utilise directement un QString et je ne passe pas par une chaine

                                      merci quand même
                                      A++
                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      [QT] affichage de variables

                                      × 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