Partage
  • Partager sur Facebook
  • Partager sur Twitter

[QT] text() setText() Ca marche ?

mais c'est quoi ce bug ?

Sujet résolu
    13 juin 2008 à 19:26:03

    o_O
    si je marque
    lineEdit5.setText("bonjour");
    lineEdit5->setText("bonjour"); // cela dépend si je met un pointeur ou pas  
    //je met pas les deux jsuis pas stupide a ce point 
    

    Il me dit :
    'setText' has not been declared


    Alors je comprend pas pourquoi on ne peut pas modifier le texte de QlineEdit !!!

    probleme de méthode ? une autre fonction a utiliser ?

    merci de vos réponses
    a+
    • Partager sur Facebook
    • Partager sur Twitter
      13 juin 2008 à 19:28:01

      si "lineEdit5" est un pointeur, c'est normal que ".setText" ne fonctionne pas.
      si ce n'est pas un pointeur, c'est le deuxième qui ne risque pas de fonctionner.
      • Partager sur Facebook
      • Partager sur Twitter
        13 juin 2008 à 19:29:17

        merci j'ai édité mon texte (regarde a coté de mon code ^^)

        en fait il ne me donne plus d'erreur avec -> (normal j'avais pas essayé :euh:

        par contre je n'arrive pas a mettre une variable dedans

        MaFenetre.h :
        QString *phrase = "Salut";
        

        MaFenetre.cpp :
        QString *phrase = "Salut";
        lineEdit5->setText(&phrase);
        


        Voila ca marche pas
        • Partager sur Facebook
        • Partager sur Twitter
          13 juin 2008 à 20:07:00

          tu t'es un peu trompé : pour obtenir la valeur d'un pointeur, ce n'est pas un '&' mais un '*' ^^ :

          lineEdit5->setText(*phrase);
          


          et je vois strictement pas pourquoi tu fait un pointeur vers un QString.
          • Partager sur Facebook
          • Partager sur Twitter
          Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
            13 juin 2008 à 20:20:59

            normal que ça marche pas, ceci est faux :
            QString *phrase = "Salut";
            

            il faut faire :
            QString phrase = "Salut";
            

            ou
            QString *phrase = new QString("Salut");
            
            • Partager sur Facebook
            • Partager sur Twitter
              14 juin 2008 à 11:14:56

              ok merci ça m'a bien aidé ça déjà

              si je met le code :
              QString *phrase = new QString("Salut");
                  lineEdit5->setText(*phrase);
                  setLayout(vbox1);
              

              dans MaFenetre.cpp il n'y a pas de probleme.
              par contre j'ai un bouton, et quand je clique dessus je voudrais que "bonjour" apparaisse dans ma lineEdit5

              J'ai donc mis
              QObject::connect(bouton1, SIGNAL(clicked()), this, SLOT(ouvrirDialogue()));
              
              void MaFenetre::ouvrirDialogue()
              {
                  QString *phrase = new QString("Salut");
                  lineEdit5->setText(*phrase);
              }
              


              et la la compilation marche, mais un probleme se pose lorsque je clique sur mon bouton

              Si-master1.exe a rencontré un problème et doit fermer. 
              Nous vous prions de nous excuser pour le désagrément encouru.
              etc etc ...


              Alors j'ai essayé plusieurs choses (qui ne marchent pas mieux)

              - setLayout(vbox1); apres le QObject::connect
              erreur : ca plante quand je clique

              - setLayout(vbox1); dans MaFenetre::ouvrirDialogue()
              erreur : vbox1 n'est pas déclaré dans MaFenetre::ouvrirDialogue()

              maintenant je ne comprends toujours pas comment faire pour que ça marche :|

              merci de votre aide
              • Partager sur Facebook
              • Partager sur Twitter
                14 juin 2008 à 14:43:07

                essais ? :
                QString phrase = "Salut";
                lineEdit5->setText(phrase);
                


                .. sinon, donne nous un code complet ^^
                • Partager sur Facebook
                • Partager sur Twitter
                Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
                  14 juin 2008 à 16:32:52

                  ca marche pas non plus

                  voici le code complet

                  j'ai remplacé lineEdit5 par lineEdit1


                  main.cpp :
                  #include <QApplication>
                  #include <QtGui>
                  #include "MaFenetre.h"
                  
                  int main(int argc, char *argv[])
                  {
                      QApplication app(argc, argv);
                  
                      MaFenetre fenetre1;
                      fenetre1.show();
                  
                      return app.exec();
                  }
                  


                  MaFenetre.h :
                  #ifndef MAFENETRE_H_INCLUDED
                  #define MAFENETRE_H_INCLUDED
                  
                  #include <QApplication>
                  #include <QtGui>
                  
                  
                  class MaFenetre : public QWidget
                  {
                      Q_OBJECT
                  
                      public:
                      MaFenetre();
                  
                      public slots:
                      void ouvrirDialogue();
                  
                      private:
                  
                      char *phrase;// Je dois faire un QString ? ne pas le mettre en pointeur ?
                      QPushButton *bouton1;
                      QLineEdit *lineEdit1;
                  
                  };
                  #endif
                  


                  MaFenetre.cpp :
                  #include "MaFenetre.h"
                  
                  MaFenetre::MaFenetre() : QWidget()
                  {
                  
                      QLineEdit *lineEdit1 = new QLineEdit;
                      QPushButton *bouton1 = new QPushButton("Marquer Salut");
                  
                      QGridLayout *vbox1 = new QGridLayout;
                  
                      vbox1->addWidget(lineEdit1, 0, 1);
                      vbox1->addWidget(bouton1, 0, 2);
                        
                      
                      setLayout(vbox1);
                   
                      QObject::connect(bouton1, SIGNAL(clicked()), this, SLOT(ouvrirDialogue()));
                     
                      setLayout(vbox1);
                  
                  }
                  
                  void MaFenetre::ouvrirDialogue()
                  {
                    /*QString *phrase = new QString("Salut");
                      lineEdit5->setText(*phrase);
                                                            (j'ai essayé avec les deux)*/
                      QString phrase = "Salut";
                      lineEdit1->setText(phrase);
                  
                  }
                  
                  • Partager sur Facebook
                  • Partager sur Twitter
                    14 juin 2008 à 17:17:56

                    Je pense (pour venir a l'instant de résoudre chez moi un pb similaire xD) que ça vient d'un problème de double définition :
                    -Dans ton .H tu défini phrase comment un tableau de char
                    -Dans ton cpp,(::ouvrirDialogue) tu redefini phrase comme un Qstring.

                    Essai de mettre Qstring a la place de char dans le header(garde le pointeur ^^) et enlève le Qstring de ta fonction. ça donne donc:

                    phrase = "Salut";
                    lineEdit1->setText(phrase);
                    
                    • Partager sur Facebook
                    • Partager sur Twitter
                      14 juin 2008 à 17:29:58

                      Vire char *phrase de ton .hpp

                      Tu fais juste :
                      QString phrase = "Salut";
                      • Partager sur Facebook
                      • Partager sur Twitter
                        14 juin 2008 à 19:44:36

                        avec
                        //Dans le .h :  QString *phrase;
                        // dans le .cpp :
                          phrase = "Salut";
                          lineEdit1->setText(phrase);
                        


                        erreur :

                        MaFenetre.cpp: In member function `void MaFenetre::ouvrirDialogue()':
                        MaFenetre.cpp:88: error: cannot convert `const char[6]' to `QString*' in assignment
                        MaFenetre.cpp:91: error: no matching function for call to `QLineEdit::setText(QString*&)'
                        ../../4.4.0/include/QtGui/../../src/gui/widgets/qlineedit.h:163: note: candidates are: void QLineEdit::setText(const QString&)
                        mingw32-make[1]: *** [release/MaFenetre.o] Error 1
                        mingw32-make[1]: Leaving directory `C:/Qt/projets/Si-master1.5'
                        mingw32-make: *** [release] Error 2


                        o_O

                        avec juste
                        QString phrase = "Salut";
                        lineEdit1->setText(phrase);
                        


                        ca compile puis ca plante lorsque je clique sur le bouton

                        serieusement ce bug commence a me souler j'ai plusieurs problemes de ce genre dans plusieurs programmes et personne ne trouve ...
                        • Partager sur Facebook
                        • Partager sur Twitter
                          14 juin 2008 à 20:14:01

                          Et en faisant:
                          //dans ton .h
                          QString* phrase;
                          
                          //Dans le constructeur (.cpp) :
                          phrase = new QString("Salut");
                          
                          // dans ta méthode :
                          lineEdit1->setText(*phrase);
                          

                          ?
                          • Partager sur Facebook
                          • Partager sur Twitter
                            14 juin 2008 à 20:15:34

                            Soit tu fais :
                            QString phrase = "Salut";
                            lineEdit1->setText(phrase);
                            


                            Ou sinon :
                            QString *phrase = new QString("Salut");
                            lineEdit1->setText(phrase);
                            


                            Pas compliqué. ;)
                            • Partager sur Facebook
                            • Partager sur Twitter
                              14 juin 2008 à 21:53:13

                              @ Goten :
                              ca plante avec la traditionnelle fenetre windows de bug ""nom du projet" a du fermer. Nous vous excusons du désagrément encouru ....... (menfin j'ai pas copié exactememnt le texte mais tu vois ce que je veux dire)

                              @ Dr-jackal :
                              Ton truc compile puis ... plante

                              @United :
                              Ton premier truc compile puis bug "Application.exe a rencontré un problème et doit fermer. Nous vous prions de nous excuser pour le désagrément encouru. etc.."

                              ton deuxieme truc compile pas :

                              MaFenetre.cpp: In member function `void MaFenetre::ouvrirDialogue()':
                              MaFenetre.cpp:89: error: no matching function for call to `QLineEdit::setText(QS
                              tring*&)'
                              ../../4.4.0/include/QtGui/../../src/gui/widgets/qlineedit.h:163: note: candidate
                              s are: void QLineEdit::setText(const QString&)



                              sinon l'erreur ne pourait pas venir de
                              setLayout(vbox1);//j'affiche tout
                              
                                  QObject::connect(bouton1, SIGNAL(clicked()), this, SLOT(ouvrirDialogue()));
                               
                                  setLayout(vbox1);//je réaffiche apres le slot
                              
                              // j'ai essayé de mettre SetLayout(vbox1); dans MaFenetre::ouvrirDialogue
                              // mais le compilateur n'aime pas ca car vbox1 n'est pas déclaré dans
                              // MaFenetre::ouvrirDialogue
                              



                              je vais finir par croire qu'on ne peut pas modifier QLineEdit dans un slot ^^



                              • Partager sur Facebook
                              • Partager sur Twitter
                                14 juin 2008 à 21:56:40

                                t'a bien viré le char *phrase dans le .h ???

                                et aussi QString *phrase (pour ma méthode)
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  14 juin 2008 à 22:01:12

                                  oui oui je l'ai viré mais ca bug toujours lorsque je clique sur le bouton
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    14 juin 2008 à 22:09:42

                                    Bon j'ai trouvé...

                                    En fait c'est quand tu crées ton bouton et ton lineEdit que tu te plantes.
                                    dans ton .h tu as : QPushButton *boutton;
                                    dans ton .cpp tu dois retrouver : boutton = new QPushButton("...")

                                    Et pareil pour tout!
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      14 juin 2008 à 22:14:19

                                      euh tu as bien lu mon .cpp ???

                                      QLineEdit *lineEdit1 = new QLineEdit;
                                       QPushButton *bouton1 = new QPushButton("Marquer Salut");
                                      QGridLayout *vbox1 = new QGridLayout;
                                      vbox1->addWidget(lineEdit1, 0, 1);
                                      vbox1->addWidget(bouton1, 0, 2);
                                      setLayout(vbox1);
                                      QObject::connect(bouton1, SIGNAL(clicked()), this, SLOT(ouvrirDialogue()));
                                      
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        14 juin 2008 à 22:17:23

                                        oui et justement :
                                        rien que la première ligne c'est pas sa... c'est plus ça :
                                        lineEdit1 = new QLineEdit;


                                        ps : j'ai corrigé suivant le schéma que je te donne et je l'ai compilé et sa marche impec :)
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          14 juin 2008 à 22:25:07

                                          un énorme merci ca marche !!!!
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            14 juin 2008 à 22:56:45

                                            lol merci

                                            par contre
                                            je me suis apercu d'un truc
                                            je voudrais afficher un nombre que choisit l'utilisateur


                                            long nombre = QInputDialog::getInteger(this, "Nombre", "Quelle nombre choisissez vous ?");
                                            


                                            et je voudrais l'afficher

                                            lineEdit1->setText(nombre);
                                            
                                            Mais c'est la méthode pour afficher du texte et le compilateur aime pas ca
                                            alors comment fait-on pour afficher un nombre ? (je dois peut etre convertir mon nombre en QString, mais alors comment faire ?)
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              14 juin 2008 à 23:02:12

                                              J'ai eu le meme ennui il faut faire :
                                              long n=1;
                                              QString s;
                                              s.setNum(n);
                                              

                                              c'est testé et approuvé

                                              Pourra tu me dire si sa marche ?
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                14 juin 2008 à 23:09:51

                                                merci génial ^^
                                                aujourd'hui est mon jour de chance

                                                au fait les gars vu que vous etes super bons en C++ / QT regardez si vous comprenez mon probleme (lien dans ma signature)
                                                • Partager sur Facebook
                                                • Partager sur Twitter

                                                [QT] text() setText() Ca marche ?

                                                × 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