Partage
  • Partager sur Facebook
  • Partager sur Twitter

[QT] récupérer des valeurs

    6 juin 2008 à 16:36:57

    Salut

    je voudrais simplement récupérer une valeur de ma lineEdit


    Main.cpp :

    #include <QApplication>
    #include <QtGui>
    #include "MaFenetre.h"
    
    
    
    
    int main(int argc, char *argv[])
    {
    QApplication app(argc, argv);
    
        MaFenetre fenetre;
        fenetre.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();
        QLineEdit *lineEdit1(), *lineEdit2();
    
        public slots:
        void ouvrirDialogue();
    
        private:
        QPushButton *bouton1;
    
     
    
    };
    
    #endif
    


    MaFenetre.cpp :

    #include "MaFenetre.h"
    
    MaFenetre::MaFenetre() : QWidget()
    {
        
    
    
            QLineEdit *lineEdit1 = new QLineEdit("");
            QLineEdit *lineEdit2 = new QLineEdit("");
    
            QPushButton *bouton1 = new QPushButton("Calcul");
    
    
        QGridLayout *vbox1 = new QGridLayout;
    
            
            vbox1->addWidget(lineEdit1, 0, 0);
            vbox1->addWidget(lineEdit1, 0, 1);
            
            vbox1->addWidget(bouton1, 2, 0);
    
    
    
        fenetre.setLayout(vbox1);
        
        QObject::connect(bouton1, SIGNAL(clicked()), qApp, SLOT(ouvrirDialogue()));
    
    
    }
    
    void MaFenetre::ouvrirDialogue()
    {
        /* Ici se pose mon probleme : je m'explique.
    Je voudrais prendre la valeur qui est affichée à l'interieur de mon 
    lineEdit1 pour faire des oppération dessus, puis inscrire ma valeur 
    dans lineEdit2 (et qu'on ne puisse pas écrire que dans lineEdit1).
    
    Je voudrais donc connaitre la façon dont on récupère la valeur de lineEdit1
    
    exemple : lineEdit1 = 43
    Valeur de lineEdit2 = valeur de lineEdit1 * 2
    On ne peut écrire notre valeur que dans lineEdit1
    
    */
    
        
    }
    


    merci a++
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      6 juin 2008 à 18:08:53

      RTFM^^
      sinon c'est la propriété text et la propriété readOnly.
      Regarde la
      • Partager sur Facebook
      • Partager sur Twitter
        6 juin 2008 à 18:23:16

        si j'ai bien compris je dois marquer


        MaFenetre.h :
        
         const text();
        
        
        
        MaFenetre.cpp :
        
        void MaFenetre::ouvrirDialogue()
        {
                 QString text(&lineEdit1); // ???
        /* et la pour le ressortir dans lineEdit2 je trouve pas et je comprend 
        pas la méthode (si c'est readOnly)*/
        }
        
        • Partager sur Facebook
        • Partager sur Twitter
          6 juin 2008 à 19:24:38

          Pour récupérer le texte tu utiliser la fonction getText();


          QlineEdit* lineEdit1 = new QLineEdit(this);
          QlineEdit* lineEdit2 = new QLineEdit(this);
          
          //Pour le read only
          lineEdit2->setReadOnly(true);
          
          //et pour récupérer le texte, tu utilise la fonction text(): 
          
          lineEdit1->text(); //retourne un QString
          


          voila
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            6 juin 2008 à 20:15:01

            revois le cour de mateo sur les atribut des widgets
            • Partager sur Facebook
            • Partager sur Twitter
              7 juin 2008 à 10:43:53

              ok
              mais j'ai beau relire ce cours j'arrive pas a comprendre comment insérer ca dans mon code !!
              (je crains quand meme)

              pour récupérer la texte la ca va je met dans ma fonction
              void MaFenetre::ouvrirDialogue()
              {
                 lineEdit1->text(texte);
              }
              


              je rajoute
              QString texte();
              
              dans mon .h


              par contre pour le setReadOnly je comprend toujours pas :(

              on ne peut pas utiliser
              lineEdit2.setText(texte);
              
              ?
              • Partager sur Facebook
              • Partager sur Twitter
                7 juin 2008 à 10:54:04

                Pour récupérer le texte :
                texte = LineEdit1->text();
                


                Pour convertir ton texte en int :
                int nb = texte.toStdString().c_str();
                


                Donc ce qui donne au final (sans passer par texte):
                int nb = LineEdit1->text().toStdString().c_str();
                
                • Partager sur Facebook
                • Partager sur Twitter
                  7 juin 2008 à 11:04:59

                  void MaFenetre::ouvrirDialogue()
                  {
                    QMessageBox::warning(lineEdit1->text()); 
                  }
                  
                  • Partager sur Facebook
                  • Partager sur Twitter
                  :)
                    7 juin 2008 à 11:18:52

                    merci king92world
                    et pour mettre la valeur dans lineEdit2 comment je fais parce que la fonction setReadOnly je la comprend pas

                    au fait je vais pas utiliser la fonction text() car je vais prendre un nombre au lieu d'une chaine de caractères

                    • Partager sur Facebook
                    • Partager sur Twitter
                      7 juin 2008 à 11:31:25

                      Tu es obligé de passer par text(), je ne crois pas qu'il y ait une méthode qui permet de récupérer directement un nombre.

                      La méthode setReadOnly() attend un bool et non le texte (ou le nombre) que tu veux afficher.
                      LineEdit2.setReadOnly(true);
                      Qtring texte2;
                      texte2.setNum(nb);
                      LineEdit2.setText(texte2);
                      
                      • Partager sur Facebook
                      • Partager sur Twitter
                        7 juin 2008 à 12:04:12

                        alors la se pose un probleme

                        je remet tout le code source (car il est plus long que ce que j'ai mis simplement au début)

                        J'arrivais pourtant a afficher la fenetre quand je fesait tout dans le main et que j'avais pas de constructeur ...

                        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 <QWidget>
                        #include <QPushButton>
                        #include <QMessageBox>
                        #include <QtGui>
                        
                        
                        class MaFenetre : public QWidget
                        {
                            Q_OBJECT
                        
                            public:
                            MaFenetre();
                            int nb;
                            QString texte2();
                            QLabel *label1(), *label2(), *label3(), *label4(), *label5(), *label6(), *label7(), *label8(), *label9(), *label10(), *label11(), *label12();
                            QLineEdit *lineEdit1(), *lineEdit2(), *lineEdit3(), *lineEdit4(), *lineEdit5(), *lineEdit6(), *lineEdit7(), *lineEdit8();
                            public slots:
                            void ouvrirDialogue();
                        
                            private:
                            QPushButton *bouton1;
                        
                        
                        };
                        
                        #endif
                        


                        MaFenetre.cpp :
                        #include "MaFenetre.h"
                        
                        MaFenetre::MaFenetre() : QWidget()
                        {
                        
                                QLabel *label1 = new QLabel("Fonte");
                                QLabel *label2 = new QLabel("Metal");
                                QLabel *label3 = new QLabel("Krypronite");
                                QLabel *label4 = new QLabel("Epice");
                        
                                QLabel *label9 = new QLabel("   Converti :  ");
                                QLabel *label10 = new QLabel("               ");
                                QLabel *label11 = new QLabel("               ");
                                QLabel *label12 = new QLabel("               ");
                        
                                QLabel *label5 = new QLabel("Fonte");
                                QLabel *label6 = new QLabel("Metal");
                                QLabel *label7 = new QLabel("Krypronite");
                                QLabel *label8 = new QLabel("Epice");
                        
                        
                        
                        
                                QLineEdit *lineEdit1 = new QLineEdit("");
                                QLineEdit *lineEdit2 = new QLineEdit("");
                                QLineEdit *lineEdit3 = new QLineEdit("");
                                QLineEdit *lineEdit4 = new QLineEdit("");
                        
                                QLineEdit *lineEdit5 = new QLineEdit("");
                                QLineEdit *lineEdit6 = new QLineEdit("");
                                QLineEdit *lineEdit7 = new QLineEdit("");
                                QLineEdit *lineEdit8 = new QLineEdit("");
                        
                                QPushButton *bouton1 = new QPushButton("Calcul");
                        
                        
                            QGridLayout *vbox1 = new QGridLayout;
                        
                                vbox1->addWidget(label1, 0, 0);
                                vbox1->addWidget(lineEdit1, 0, 1);
                                vbox1->addWidget(label2, 1, 0);
                                vbox1->addWidget(lineEdit2, 1, 1);
                                vbox1->addWidget(label3, 2, 0);
                                vbox1->addWidget(lineEdit3, 2, 1);
                                vbox1->addWidget(label4, 3, 0);
                                vbox1->addWidget(lineEdit4, 3, 1);
                                vbox1->addWidget(bouton1, 4, 0, 1, 2);
                        
                                vbox1->addWidget(label9, 0, 3);
                                vbox1->addWidget(label10, 1, 3);
                                vbox1->addWidget(label11, 2, 3);
                                vbox1->addWidget(label12, 3, 3);
                        
                                vbox1->addWidget(label5, 0, 4);
                                vbox1->addWidget(lineEdit5, 0, 5);
                                vbox1->addWidget(label6, 1, 4);
                                vbox1->addWidget(lineEdit6, 1, 5);
                                vbox1->addWidget(label7, 2, 4);
                                vbox1->addWidget(lineEdit7, 2, 5);
                                vbox1->addWidget(label8, 3, 4);
                                vbox1->addWidget(lineEdit8, 3, 5);
                        
                            fenetre1.setLayout(vbox1);
                        
                            QObject::connect(bouton1, SIGNAL(clicked()), qApp, SLOT(ouvrirDialogue()));
                        
                        
                        }
                        
                        void MaFenetre::ouvrirDialogue()
                        {
                        
                            //nb = lineEdit1->text(); ?? je la met celle la ou pas ? 
                        // car quand je la met il me signale une erreur ( base operand of '->' is not a pointer)
                        
                            lineEdit2.setReadOnly(true);
                            QString texte2;
                            texte2.setNum(nb);
                            lineEdit2.setText(texte2);
                        
                        
                        }
                        


                        L'erreur se trouve dans le MaFenetre.cpp et la il me dit qu'il ne connait pas fenetre1

                        L'ERREUR FATALE :
                        C:\Qt\projets\Si-master>qmake
                        
                        C:\Qt\projets\Si-master>make
                        mingw32-make -f Makefile.Release
                        mingw32-make[1]: Entering directory `C:/Qt/projets/Si-master'
                        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 constructor `MaFenetre::MaFenetre()':
                        MaFenetre.cpp:63: error: `fenetre1' was not declared in this scope
                        MaFenetre.cpp:63: warning: unused variable 'fenetre1'
                        MaFenetre.cpp: In member function `void MaFenetre::ouvrirDialogue()':
                        MaFenetre.cpp:74: error: insufficient contextual information to determine type
                        MaFenetre.cpp:77: error: insufficient contextual information to determine type
                        
                        ouhlala ca veut dire quoi ca ?
                        
                        mingw32-make[1]: *** [release/MaFenetre.o] Error 1
                        mingw32-make[1]: Leaving directory `C:/Qt/projets/Si-master'
                        mingw32-make: *** [release] Error 2
                        • Partager sur Facebook
                        • Partager sur Twitter
                          7 juin 2008 à 12:38:32

                          Bon je vais te montrer comment procéder:

                          déjà regarde la première erreur :

                          MaFenetre.cpp: In constructor `MaFenetre::MaFenetre()':
                          MaFenetre.cpp:63: error: `fenetre1' was not declared in this scope
                          MaFenetre.cpp:63: warning: unused variable 'fenetre1'

                          Ici on te dit quoi : Dans le constructeur 'MaFenetre::MaFenetre' à la ligne 63 'fenetre1' n'est pas déclarer
                          Donc tu regarde ton code à la ligne 63 et dans ton header pour voir si c'est le cas, et la je viens de voir que c'étais le cas donc tu le vire. En plus il sert à rien.

                          Après
                          MaFenetre.cpp: In member function `void MaFenetre::ouvrirDialogue()':
                          MaFenetre.cpp:74: error: insufficient contextual information to determine type
                          MaFenetre.cpp:77: error: insufficient contextual information to determine type


                          La on te dis dans la fonction membre 'void MaFenetre::ouvrirDialogue()' aux lignes 74 et 77 qu'il y a une erreur. Mince je l'a comprend pas. C'est pas grave je vais voir quand même ... la je me rend compte que c'est du grand n'importe quoi donc je tente de comprendre avec la doc:
                          je tape qlineedite dans google et c'est super le deuxième lien me mène ici => http://doc.trolltech.com/4.4/qlineedit.html
                          je cherche... oui encore...
                          ah! je trouve http://doc.trolltech.com/4.4/qlineedit.html#text-prop
                          je vois que c'est un slot public et je regarde son prototype pour voir qu'est ce qu'il veux recevoir :void setText ( const QString & );
                          Mais oui un QString!
                          Donc toi il te reste à faire ça :


                          lineEdit2.setReadOnly(true); // l'utilisateur ne pourra pas ecrire dans ce line edit
                          /* pourquoi mettre un QString en QString?? si tu ne comprend pas pourquoi je te dis ça regarde dans la class QString setNum()
                          mais lineEdit2 n'est il pas un pointeur??? si donc on vire le point
                              lineEdit2.setText(texte2);
                          */
                          lineEdit2->setText(lineEdit1->text());
                          


                          De plus tu déclare deux fois toutes tes variable il y auras donc problème.
                          Donc voilà ce qu'il faut faire :
                          #ifndef MAFENETRE_H_INCLUDED
                          #define MAFENETRE_H_INCLUDED
                          
                          #include <QApplication>
                          #include <QWidget>
                          #include <QPushButton>
                          #include <QMessageBox>
                          #include <QtGui>
                          
                          
                          class MaFenetre : public QWidget
                          {
                              Q_OBJECT
                          
                              public:
                              MaFenetre();
                          
                              public slots:
                              void ouvrirDialogue();
                          
                              private:
                              QPushButton *bouton1;
                              QLabel *label1, *label2, *label3, *label4, *label5, *label6, *label7, *label8, *label9, *label10, *label11, *label12;
                              QLineEdit *lineEdit1, *lineEdit2, *lineEdit3, *lineEdit4, *lineEdit5, *lineEdit6, *lineEdit7, *lineEdit8;
                          /* les variables doivent être privé (cf: cours m@teo)*/
                          };
                          
                          #endif
                          

                          #include "MaFenetre.h"
                          
                          MaFenetre::MaFenetre() : QWidget()
                          {
                          
                                  label1 = new QLabel("Fonte");
                                  label2 = new QLabel("Metal");
                                  label3 = new QLabel("Krypronite");
                                  label4 = new QLabel("Epice");
                          
                                  label9 = new QLabel("   Converti :  ");
                                  label10 = new QLabel("               ");
                                  label11 = new QLabel("               ");
                                  label12 = new QLabel("               ");
                          
                                  label5 = new QLabel("Fonte");
                                  label6 = new QLabel("Metal");
                                  label7 = new QLabel("Krypronite");
                                  label8 = new QLabel("Epice");
                          
                          
                                  lineEdit1 = new QLineEdit;
                                  lineEdit2 = new QLineEdit;
                                  lineEdit3 = new QLineEdit;
                                  lineEdit4 = new QLineEdit;
                          
                                  lineEdit5 = new QLineEdit;
                                  lineEdit6 = new QLineEdit;
                                  lineEdit7 = new QLineEdit;
                                 lineEdit8 = new QLineEdit;
                          
                                 bouton1 = new QPushButton("Calcul");
                          
                          
                              QGridLayout *vbox1 = new QGridLayout;
                          
                                  vbox1->addWidget(label1, 0, 0);
                                  vbox1->addWidget(lineEdit1, 0, 1);
                                  vbox1->addWidget(label2, 1, 0);
                                  vbox1->addWidget(lineEdit2, 1, 1);
                                  vbox1->addWidget(label3, 2, 0);
                                  vbox1->addWidget(lineEdit3, 2, 1);
                                  vbox1->addWidget(label4, 3, 0);
                                  vbox1->addWidget(lineEdit4, 3, 1);
                                  vbox1->addWidget(bouton1, 4, 0, 1, 2);
                          
                                  vbox1->addWidget(label9, 0, 3);
                                  vbox1->addWidget(label10, 1, 3);
                                  vbox1->addWidget(label11, 2, 3);
                                  vbox1->addWidget(label12, 3, 3);
                          
                                  vbox1->addWidget(label5, 0, 4);
                                  vbox1->addWidget(lineEdit5, 0, 5);
                                  vbox1->addWidget(label6, 1, 4);
                                  vbox1->addWidget(lineEdit6, 1, 5);
                                  vbox1->addWidget(label7, 2, 4);
                                  vbox1->addWidget(lineEdit7, 2, 5);
                                  vbox1->addWidget(label8, 3, 4);
                                  vbox1->addWidget(lineEdit8, 3, 5);
                          
                              setLayout(vbox1); /* j'ai viré le fenetre1 */
                          
                              QObject::connect(bouton1, SIGNAL(clicked()), this, SLOT(ouvrirDialogue()));
                          
                          
                          }
                          


                          Bonne chance ;)
                          • Partager sur Facebook
                          • Partager sur Twitter
                          :)
                            7 juin 2008 à 14:18:54

                            merci

                            Pour résoudre les trucs avec la console les lignes je savait mais mon anglais est assez limité donc j'ai beaucoup de mal a trouver les erreurs.

                            maintenant j'ai ton code dans MaFenetre.h et MaFenetre.cpp avec

                            void MaFenetre::ouvrirDialogue()
                            {
                                lineEdit2.setReadOnly(true);
                                lineEdit2->setText(lineEdit1->text());
                            }
                            


                            maintenant (L74 : lineEdit2.setReadOnly(true);)

                            C:\Qt\projets\Si-master>qmake
                            
                            C:\Qt\projets\Si-master>make
                            mingw32-make -f Makefile.Release
                            mingw32-make[1]: Entering directory `C:/Qt/projets/Si-master'
                            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:74: error: request for member `setReadOnly' in `((MaFenetre*)this)
                            ->MaFenetre::lineEdit2', which is of non-class type `QLineEdit*'
                            
                            Pourquoi il me dit ça ?? dans mon .h j'ai marqué QLineEdit *lineEdit1 donc c'est bien un objet QLineEdit non ?
                            
                            mingw32-make[1]: *** [release/MaFenetre.o] Error 1
                            mingw32-make[1]: Leaving directory `C:/Qt/projets/Si-master'
                            mingw32-make: *** [release] Error 2
                            
                            C:\Qt\projets\Si-master>
                            • Partager sur Facebook
                            • Partager sur Twitter
                              7 juin 2008 à 15:06:12

                              il faut que tu mette lineEdit2->setReadOnly(true);
                              • Partager sur Facebook
                              • Partager sur Twitter
                                7 juin 2008 à 17:10:46

                                o_O un gros probleme se pose !! la compilation marche .... mais lorsque je tente de calculer et je lance mon calcul .. malheur de malheur !!
                                Mince alors !!

                                Image utilisateur

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  7 juin 2008 à 17:26:40

                                  je vois pas l'image.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  :)
                                    7 juin 2008 à 17:37:56

                                    bizare je la voit

                                    sinon atend qu'elle charge

                                    c'est en gros une erreur microsoft

                                    Si-master.exe a rencontré un problème et doit fermer. Nous vous prions de nous excuser pour le désagrément encouru........ etc etc
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      7 juin 2008 à 17:44:37

                                      Bon je ne sais pas si ça va servir à quelque chose mais tente quand meme :
                                      dans la console qt fait make clean puis make
                                      make clean
                                      make


                                      Sinon il va falloir que tu utilise le debbugger gdb.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      :)
                                        7 juin 2008 à 18:06:26

                                        ben .. je vais devoir utiliser le débugger packe ca a pas marché ^^


                                        on le trouve ou et comment on s'en sert ?
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          7 juin 2008 à 18:25:18

                                          GDB te dirais quel est l'erreur enfin où ça plante et qu'est ce qui fait planter.
                                          si tu es dans Qt prompt tape gdb.
                                          Si tu as une erreur c'est parce qu'il n'est pas compiler donc regarde l'image ==>
                                          http://www.monsterup.com/upload/1212855514.jpg
                                          une fois que tu l'a compiler (tu en as pour deux ou trois heures) il faudra que tu t'en servent pour cela tu devra ouvrir ton *.pro en y mettant :

                                          Citation : Pas de titre


                                          CONFIG += debug


                                          Après tu devra recompiler ton programme avec Qt prompt :
                                          make clean
                                          make debug


                                          Après normalement il sera dans le dossier débug pour pouvoir faire fonctionner ton programme il faudra que tu aille cherche les dll dans le dossier Qt (ce ne sont pas les même que d'abitude) :
                                          dans le dossier : C:\Qt\4.4.0\bin
                                          tu prendre les dll :
                                          mingwm10.dll
                                          QtCored4.dll
                                          QtGuid4.dll

                                          attention il faut bien prendre celle quion un d dans le nom (d = debug).

                                          Un fois tout ça fait retourne dans le fenetre de Qt prompt fait :
                                          gdb
                                          (gdb) target exec C:\chemin\de\ton\exe\monprogramme.exe
                                          (gdb) run
                                          /* DES INFOS DEFILE */
                                          (gdb) bt


                                          dis nous ce qu'il y a.
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          :)
                                            7 juin 2008 à 18:38:25

                                            Je vais dans Qt (build debug libraries)
                                            je dis que j'accepte sa license et il me fait un blabla énorme !! la je suis censé attendre ?

                                            apres comment ouvrir le .pro ?

                                            et apres dans Qt commad prompt je marque

                                            qmake
                                            make clean
                                            make debug



                                            Citation : Moii

                                            Après normalement il sera dans le dossier débug pour pouvoir faire fonctionner ton programme il faudra que tu aille cherche les dll dans le dossier Qt (ce ne sont pas les même que d'abitude) :
                                            dans le dossier : C:\Qt\4.4.0\bin
                                            tu prendre les dll :
                                            mingwm10.dll
                                            QtCored4.dll
                                            QtGuid4.dll



                                            ok et la si j'ai bien compris mon .pro sera dans le dossier debug de mon programme (dans mon cas C:\Qt\projets\Si-master\debug) ??

                                            et les trois dll je dois les metter ou ? dans le dossier debug ? dans le release ?

                                            merci beaucoup de ton aide

                                            (j'aurais du faire ca simple ^^ avec un boite de dialogue getInteger :p
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              7 juin 2008 à 18:59:19

                                              non ton *.pro est au meme endroit que d'habitude.
                                              Pour l'ouvrir tu fait clique droit ouvrir avec et tu choisis ton éditeur (je te conseil notepad++).
                                              Bon oui laisse gdb mettre sont blabla comme tu dis en faite il compile le debbugger (il cré les dll, ..).
                                              Après tu fais comme dab avec Qt prompt rien ne change tu n'as qu'a suivre exactement ce que je t'ais dit.
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              :)
                                                7 juin 2008 à 19:25:36

                                                ok donc j'atend que le débugger fasse son truc et apres je le ferme comme ca sans rien mettre ?

                                                "." -I"..\..\..\mkspecs\win32-g++" -o release\qstring.o ..\..\corelib\tools\qstr
                                                ing.cpp
                                                mingw32-make[2]: *** AccÞs refusÚ.
                                                .  Stop.
                                                mingw32-make[2]: Leaving directory `C:/Qt/4.4.0/src/tools/moc'
                                                mingw32-make[1]: *** [release] Error 2
                                                mingw32-make[1]: Leaving directory `C:/Qt/4.4.0/src/tools/moc'
                                                mingw32-make: *** [debug-C__Qt_4_4_0_src_tools_moc] Error 2
                                                C:\Qt\4.4.0\src>



                                                o_O c pas un probleme ca ??


                                                quand j'ouvre le .pro je marque ou CONFIG += debug ??

                                                moi j'ai marqué
                                                ######################################################################
                                                # Automatically generated by qmake (2.01a) sam. 7. juin 16:52:44 2008
                                                ######################################################################
                                                
                                                TEMPLATE = app
                                                TARGET = 
                                                DEPENDPATH += .
                                                INCLUDEPATH += .
                                                
                                                Je le rajoute ici ??
                                                
                                                
                                                # Input
                                                HEADERS += MaFenetre.h
                                                SOURCES += MaFenetre.cpp main.cpp
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  7 juin 2008 à 19:33:04

                                                  une fois qu'il a fini tu peux le fermer.
                                                  Après tu ouvre Qt prompt.
                                                  Avant de recompiler ton projet il faut ouvrir le *.pro (avec bloc note ou ce que tu veux)
                                                  rajoute à la fin du fichier :
                                                  CONFIG += debug

                                                  Après dans la console Qt prompt tu fais comme d'ab comme quand tu vas compiler ton projet sauf qu'il faut faire un make clean (pour surpprimer tous les fichiers du genre moc_MaFenetre.cpp et après tu tappe :
                                                  qmake
                                                  make debug.
                                                  Une fois tout ça fais tu tape gdb
                                                  tu lui indique ou est les exe donc :
                                                  target exec C:\chemin\de\ton\exe\monApp.exe
                                                  après tu tappe run
                                                  une fois que ton programme plante tu aura un message dans la console et tu verra à quoi ça correspond si c'est du chinois reposte.

                                                  Voilà. ;)

                                                  edit :
                                                  http://www.gnu.org/software/gdb/
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                  :)
                                                    7 juin 2008 à 19:43:29

                                                    merci

                                                    mais je crois qu'il y a un probleme

                                                    de plus les .dll ne sont pas présentes (avec le "d")

                                                    je crois que le debugger ne s'est pas éxécuté totalement
                                                    (voir un peu plus haut)

                                                    Setting up a MinGW/Qt only environment...
                                                    -- QTDIR set to C:\Qt\4.4.0
                                                    -- PATH set to C:\Qt\4.4.0\bin
                                                    -- Adding C:\MinGW\bin to PATH
                                                    -- Adding C:\WINDOWS\System32 to PATH
                                                    -- QMAKESPEC set to win32-g++
                                                    
                                                    C:\Qt\4.4.0>cd C:\Qt\projets\Si-master
                                                    
                                                    C:\Qt\projets\Si-master>make clean
                                                    mingw32-make -f Makefile.Debug clean
                                                    mingw32-make[1]: Entering directory `C:/Qt/projets/Si-master'
                                                    del debug\moc_MaFenetre.cpp
                                                    Impossible de trouver C:\Qt\projets\Si-master\debug\moc_MaFenetre.cpp
                                                    del debug\MaFenetre.o debug\main.o debug\moc_MaFenetre.o
                                                    Impossible de trouver C:\Qt\projets\Si-master\debug\MaFenetre.o
                                                    mingw32-make[1]: Leaving directory `C:/Qt/projets/Si-master'
                                                    mingw32-make -f Makefile.Release clean
                                                    mingw32-make[1]: Entering directory `C:/Qt/projets/Si-master'
                                                    del release\moc_MaFenetre.cpp
                                                    Impossible de trouver C:\Qt\projets\Si-master\release\moc_MaFenetre.cpp
                                                    del release\MaFenetre.o release\main.o release\moc_MaFenetre.o
                                                    Impossible de trouver C:\Qt\projets\Si-master\release\MaFenetre.o
                                                    mingw32-make[1]: Leaving directory `C:/Qt/projets/Si-master'
                                                    
                                                    C:\Qt\projets\Si-master>qmake
                                                    
                                                    C:\Qt\projets\Si-master>make debug
                                                    mingw32-make -f Makefile.Debug
                                                    mingw32-make[1]: Entering directory `C:/Qt/projets/Si-master'
                                                    g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -
                                                    DQT_DLL -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\QtG
                                                    ui" -I"..\..\4.4.0\include\QtGui" -I"..\..\4.4.0\include" -I"." -I"c:\Qt\4.4.0\i
                                                    nclude\ActiveQt" -I"debug" -I"." -I"..\..\4.4.0\mkspecs\win32-g++" -o debug\MaFe
                                                    netre.o MaFenetre.cpp
                                                    g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -
                                                    DQT_DLL -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\QtG
                                                    ui" -I"..\..\4.4.0\include\QtGui" -I"..\..\4.4.0\include" -I"." -I"c:\Qt\4.4.0\i
                                                    nclude\ActiveQt" -I"debug" -I"." -I"..\..\4.4.0\mkspecs\win32-g++" -o debug\main
                                                    .o main.cpp
                                                    C:/Qt/4.4.0/bin\moc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -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\inc
                                                    lude\QtGui" -I"..\..\4.4.0\include" -I"." -I"c:\Qt\4.4.0\include\ActiveQt" -I"de
                                                    bug" -I"." -I"..\..\4.4.0\mkspecs\win32-g++" -D__GNUC__ -DWIN32 MaFenetre.h -o d
                                                    ebug\moc_MaFenetre.cpp
                                                    g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -
                                                    DQT_DLL -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\QtG
                                                    ui" -I"..\..\4.4.0\include\QtGui" -I"..\..\4.4.0\include" -I"." -I"c:\Qt\4.4.0\i
                                                    nclude\ActiveQt" -I"debug" -I"." -I"..\..\4.4.0\mkspecs\win32-g++" -o debug\moc_
                                                    MaFenetre.o debug\moc_MaFenetre.cpp
                                                    g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-rel
                                                    oc -mthreads -Wl -Wl,-subsystem,windows -o debug\Si-master.exe debug/MaFenetre.o
                                                     debug/main.o debug/moc_MaFenetre.o  -L"c:\Qt\4.4.0\lib" -lmingw32 -lqtmaind -lQ
                                                    tGuid4 -lQtCored4
                                                    C:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot fin
                                                    d -lQtGuid4
                                                    collect2: ld returned 1 exit status
                                                    mingw32-make[1]: *** [debug\Si-master.exe] Error 1
                                                    mingw32-make[1]: Leaving directory `C:/Qt/projets/Si-master'
                                                    mingw32-make: *** [debug] Error 2
                                                    
                                                    C:\Qt\projets\Si-master>gdb
                                                    GNU gdb 6.7.50.20071127
                                                    Copyright (C) 2007 Free Software Foundation, Inc.
                                                    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
                                                    This is free software: you are free to change and redistribute it.
                                                    There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
                                                    and "show warranty" for details.
                                                    This GDB was configured as "i686-pc-mingw32".
                                                    (gdb) target exec C:\Qt\projets\Si-master\release
                                                    C:\Qt\projets\Si-master\release: No such file or directory.
                                                    (gdb) target exec C:\Qt\projets\Si-master\release\Si-master.exe
                                                    (gdb) run
                                                    Starting program: C:\Qt\projets\Si-master\release\Si-master.exe
                                                    (no debugging symbols found)
                                                    (no debugging symbols found)
                                                    (no debugging symbols found)
                                                    (no debugging symbols found)
                                                    (no debugging symbols found)
                                                    (no debugging symbols found)
                                                    (no debugging symbols found)
                                                    (no debugging symbols found)
                                                    (no debugging symbols found)
                                                    (no debugging symbols found)
                                                    (no debugging symbols found)
                                                    (no debugging symbols found)
                                                    (no debugging symbols found)
                                                    (no debugging symbols found)
                                                    (no debugging symbols found)
                                                    (no debugging symbols found)
                                                    (no debugging symbols found)
                                                    (no debugging symbols found)
                                                    (no debugging symbols found)
                                                    (no debugging symbols found)
                                                    (no debugging symbols found)
                                                    (no debugging symbols found)
                                                    (no debugging symbols found)
                                                    (no debugging symbols found)
                                                    (no debugging symbols found)
                                                    (no debugging symbols found)
                                                    (no debugging symbols found)
                                                    warning: Lowest section in C:\WINDOWS\system32\xpsp2res.dll is .rsrc at 20001000
                                                    
                                                    (no debugging symbols found)
                                                    
                                                    Program received signal SIGSEGV, Segmentation fault.
                                                    0x655a4c31 in ZN9QLineEdit11setReadOnlyEb ()
                                                       from C:\Qt\projets\Si-master\release\QtGui4.dll
                                                    (gdb)
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      7 juin 2008 à 20:09:38

                                                      Tu as eu quoi comme message à la fin de la compilation du debbugger??
                                                      Sinon recommence.
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                      :)
                                                        7 juin 2008 à 20:28:29

                                                        Il a y a marquer dans le log
                                                        Program received signal SIGSEGV, Segmentation fault.
                                                        0x655a4c31 in ZN9QLineEdit11setReadOnlyEb ()
                                                        from C:\Qt\projets\Si-master\release\QtGui4.dll
                                                        (gdb)
                                                        --> ZN9QLineEdit11setReadOnlyEb
                                                        Donc ça vient de lineEdit2->setReadOnly(true);
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          7 juin 2008 à 20:39:27

                                                          met ça :
                                                          void MaFenetre::ouvrirDialogue()
                                                          {
                                                              lineEdit2->setText(lineEdit1->text());
                                                              lineEdit2->setReadOnly(true);
                                                          
                                                          }
                                                          

                                                          sinon pas top le double compte..
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                          :)
                                                            8 juin 2008 à 16:21:47

                                                            Tu a repondu avec un autre compte
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter

                                                            [QT] récupérer des valeurs

                                                            × 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