Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Qt4-Win] problème avec QLineEdit

Sujet résolu
    23 mars 2008 à 21:08:47

    Bonsoir et joyeuse pâque à tous!

    Bon je suis en train de réaliser un projet mais j'ai un soucis pour écupérer le texte saisie dans un QLineEdit.
    Bon voici l'erreur :

    Citation : Pas de titre

    C:\programmations\Calculs_Electro>make
    mingw32-make -f Makefile.Release
    mingw32-make[1]: Entering directory `C:/programmations/'
    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 -I"d:\QT\i
    nclude\QtCore" -I"d:\QT\include\QtCore" -I"d:\QT\include\QtGui" -I"d:\QT\include
    \QtGui" -I"d:\QT\include" -I"." -I"d:\QT\include\ActiveQt" -I"release" -I"." -I"
    d:\QT\mkspecs\win32-g++" -o release\intensite.o continu\intensite.cpp
    continu\intensite.cpp: In constructor `Intensite::Intensite(QWidget*)':
    continu\intensite.cpp:19: error: 'class QString' has no member named 'text'
    continu\intensite.cpp:20: error: 'class QString' has no member named 'text'
    continu\intensite.cpp: In member function `void Intensite::calculI()':
    continu\intensite.cpp:50: error: invalid operands of types `const char[16]' and
    `QString*' to binary `operator+'
    mingw32-make[1]: *** [release\intensite.o] Error 1
    mingw32-make[1]: Leaving directory `C:/programmations/'
    mingw32-make: *** [release] Error 2


    et voici mon code :

    /*
    intensite.h
    -------------
    */
    #ifndef H_INTENSITE_H
    #define H_INTENSITE_H
     
    #include <QWidget>
    #include <QDialog>
    #include <QPushButton>
    #include <QLabel>
    #include <QLineEdit>
    #include <QString>
    #include <QVBoxLayout>
    #include <QHBoxLayout>
     
    class QWidget;
    class QDialog;
    class QPushButton;
    class QLabel;
    class QLineEdit;
    class QString;
    class QVBoxLayout;
    class QHBoxLayout;
     
    class Intensite : public QDialog {
     
        public:
            Intensite(QWidget *parent=0);
            QString text () const;
        
        public slots:
            void calculI();
            
        private:
        
            QPushButton *m_calculer;
            QLabel *label_tension, *label_resistance; 
            QLabel *label_resultat;
            QString *string_tension, *string_resistance, *string_resultat;
            QLineEdit *m_tension, *m_resistance;
            QVBoxLayout *vLayout;
            QHBoxLayout *hLayoutTension, *hLayoutResistance;
     
    };
     
    #endif
    


    /*
    intensite.cpp
    ----------------
    */
     
    #include "intensite.h"
     
    Intensite::Intensite(QWidget *parent) : QDialog(parent)
    {
        setFixedSize(500, 500);
        setWindowTitle(tr("Calculs élec - Intensité d'un courant continu"));
     
        label_tension = new QLabel("Tension : ");
        m_tension   = new QLineEdit;
    /*
    autre code de QLineEdit
    ....
    */
        m_calculer = new QPushButton(tr("Calculer"));
        connect(m_calculer, SIGNAL(clicked()), this, SLOT(calculI())));
        
        hLayoutTension = new QHBoxLayout;
        hLayoutTension->addWidget(label_tension);
        hLayoutTension->addWidget(m_tension);
        
        hLayoutResistance = new QHBoxLayout;
        hLayoutResistance->addWidget(label_resistance);
        hLayoutResistance->addWidget(m_resistance);
        
        vLayout = new QVBoxLayout;
        vLayout->addLayout(hLayoutTension);
        vLayout->addLayout(hLayoutResistance);
        vLayout->addWidget(m_calculer);
        
        setLayout(vLayout);
    }
     
    void Intensite::calculI()
    {
        double tension    = string_tension->toDouble();
        double resistance = string_resistance->toDouble();
        double resultat   = tension/resistance;
        
        string_resultat   = new QString;
        string_resultat->setNum(resultat);
        
        label_resultat    = new QLabel(tr("I = U : R \nI = "+string_tension+" : "+string_resistance+"\nI = "+string_resultat));
        
        vLayout->addWidget(label_resultat);
        
        setLayout(vLayout);
    }
    


    Je ne vois pas pourquoi il me dis que text est faux.
    Donc je vois encore moins comment récupérer le texte d'un QLineEdit.
    J'ai été voir dans la doc avant http://doc.trolltech.com/4.3/qlineedit.html#text-prop

    Voilà pouvez-vous m'aider?

    Merci!

    • Partager sur Facebook
    • Partager sur Twitter
    :)
    Anonyme
      23 mars 2008 à 22:10:40

      Je crois que les lignes 17 à 23 vont redéfinir les classes précédemment inclues.
      code de Intensite::text ?
      • Partager sur Facebook
      • Partager sur Twitter
        23 mars 2008 à 22:12:20

        1. QString text () const;


        En faite je ne comprend pas car c'est bien de mettre ça dans le *.h qui fait tout non?
        j'ai trop de mal..
        • Partager sur Facebook
        • Partager sur Twitter
        :)
        Anonyme
          24 mars 2008 à 0:02:50

          J'ai pas compris ces deux phrases.
          Tu déclares text, ok. Mais comment la définis-tu? (Le code)
          • Partager sur Facebook
          • Partager sur Twitter
            24 mars 2008 à 10:12:06

            Bon voilà j'ai refais quelque modification, mais ça ne compile toujours pas.

            voici le code :
            1. /*
            2. intensite.h
            3. -------------
            4. */
            5. #ifndef H_INTENSITE_H
            6. #define H_INTENSITE_H
            7. #include <QWidget>
            8. #include <QDialog>
            9. #include <QPushButton>
            10. #include <QLabel>
            11. #include <QLineEdit>
            12. #include <QString>
            13. #include <QVBoxLayout>
            14. #include <QHBoxLayout>
            15. class QWidget;
            16. class QDialog;
            17. class QPushButton;
            18. class QLabel;
            19. class QLineEdit;
            20. class QString;
            21. class QVBoxLayout;
            22. class QHBoxLayout;
            23. class Intensite : public QDialog {
            24.         public:
            25.                 Intensite(QWidget *parent=0);
            26.         public slots:
            27.                 void calculI();
            28.         private:
            29.                 QPushButton *m_calculer;
            30.                 QLabel *label_tension, *label_resistance;
            31.                 QLabel *label_resultat;
            32.                 QString *string_tension, *string_resistance, *string_resultat;
            33.                 QLineEdit *m_tension, *m_resistance;
            34.                 QVBoxLayout *vLayout;
            35.                 QHBoxLayout *hLayoutTension, *hLayoutResistance;
            36. };
            37. #endif


            1. /*
            2. intensite.cpp
            3. ----------------
            4. */
            5. #include "intensite.h"
            6. Intensite::Intensite(QWidget *parent) : QDialog(parent)
            7. {
            8.         setFixedSize(500, 500);
            9.         setWindowTitle(tr("Calculs élec - Intensité d'un courant continu"));
            10.     label_tension = new QLabel("Tension : ");
            11.         m_tension   = new QLineEdit;
            12.         label_resistance = new QLabel("Resistance : ");
            13.         m_resistance = new QLineEdit;
            14.         m_calculer = new QPushButton(tr("Calculer"));
            15.         connect(m_calculer, SIGNAL(clicked()), this, SLOT(calculI()));
            16.         string_tension = m_tension->text();
            17.         string_resistance = m_resistance->text();
            18.         hLayoutTension = new QHBoxLayout;
            19.         hLayoutTension->addWidget(label_tension);
            20.         hLayoutTension->addWidget(m_tension);
            21.         hLayoutResistance = new QHBoxLayout;
            22.         hLayoutResistance->addWidget(label_resistance);
            23.         hLayoutResistance->addWidget(m_resistance);
            24.         vLayout = new QVBoxLayout;
            25.         vLayout->addLayout(hLayoutTension);
            26.         vLayout->addLayout(hLayoutResistance);
            27.         vLayout->addWidget(m_calculer);
            28.         setLayout(vLayout);
            29. }
            30. void Intensite::calculI()
            31. {
            32.         double tension    = string_tension->toDouble();
            33.         double resistance = string_resistance->toDouble();
            34.         double resultat   = tension/resistance;
            35.         string_resultat   = new QString;
            36.         string_resultat->setNum(resultat);
            37.         label_resultat    = new QLabel(tr(QString("I = U : R \nI = ")+string_tension+QString(" : ")+string_resistance+QString("\nI = ")+string_resultat));
            38.         vLayout->addWidget(label_resultat);
            39.         setLayout(vLayout);
            40. }


            Citation : Pas de titre

            C:\programmations\Calculs_Electro>make
            mingw32-make -f Makefile.Release
            mingw32-make[1]: Entering directory `C:/programmations/Calculs_Electro'
            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 -I"d:\QT\i
            nclude\QtCore" -I"d:\QT\include\QtCore" -I"d:\QT\include\QtGui" -I"d:\QT\include
            \QtGui" -I"d:\QT\include" -I"." -I"d:\QT\include\ActiveQt" -I"release" -I"." -I"
            d:\QT\mkspecs\win32-g++" -o release\intensite.o continu\intensite.cpp
            continu\intensite.cpp: In constructor `Intensite::Intensite(QWidget*)':
            continu\intensite.cpp:22: error: cannot convert `QString' to `QString*' in assig
            nment
            continu\intensite.cpp:23: error: cannot convert `QString' to `QString*' in assig
            nment
            continu\intensite.cpp: In member function `void Intensite::calculI()':
            continu\intensite.cpp:50: error: invalid conversion from `QString*' to `char'
            continu\intensite.cpp:50: error: initializing argument 2 of `const QString ope
            rator+(const QString&, char)'
            continu\intensite.cpp:50: error: invalid conversion from `QString*' to `char'
            continu\intensite.cpp:50: error: initializing argument 2 of `const QString ope
            rator+(const QString&, char)'
            continu\intensite.cpp:50: error: invalid conversion from `QString*' to `char'
            continu\intensite.cpp:50: error: initializing argument 2 of `const QString ope
            rator+(const QString&, char)'
            continu\intensite.cpp:50: error: no matching function for call to `Intensite::tr
            (const QString)'
            d:/QT/include/QtGui/../../src/gui/dialogs/qdialog.h:38: note: candidates are: st
            atic QString QDialog::tr(const char*, const char*)
            d:/QT/include/QtGui/../../src/gui/dialogs/qdialog.h:38: note: st
            atic QString QDialog::tr(const char*, const char*, int)
            mingw32-make[1]: *** [release\intensite.o] Error 1
            mingw32-make[1]: Leaving directory `C:/programmations/Calculs_Electro'
            mingw32-make: *** [release] Error 2



            la je ne comprend plus rien au erreur..
            Pourquoi il me dit qu'il n'arrive pas à convertir mais type string en double??
            • Partager sur Facebook
            • Partager sur Twitter
            :)
            Anonyme
              24 mars 2008 à 11:22:29

              Citation : hiura

              les lignes 17 à 24 vont redéfinir les classes précédemment inclues.

              Logique qu'il y a des erreurs.
              • Partager sur Facebook
              • Partager sur Twitter
                24 mars 2008 à 11:36:17

                le compilateur me dit :

                Citation : Pas de titre

                C:\programmations\Calculs_Electro>make
                mingw32-make -f Makefile.Release
                mingw32-make[1]: Entering directory `C:/programmations/Calculs_Electro'
                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 -I"d:\QT\i
                nclude\QtCore" -I"d:\QT\include\QtCore" -I"d:\QT\include\QtGui" -I"d:\QT\include
                \QtGui" -I"d:\QT\include" -I"." -I"d:\QT\include\ActiveQt" -I"release" -I"." -I"
                d:\QT\mkspecs\win32-g++" -o release\main.o main.cpp
                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 -I"d:\QT\i
                nclude\QtCore" -I"d:\QT\include\QtCore" -I"d:\QT\include\QtGui" -I"d:\QT\include
                \QtGui" -I"d:\QT\include" -I"." -I"d:\QT\include\ActiveQt" -I"release" -I"." -I"
                d:\QT\mkspecs\win32-g++" -o release\mainMenu.o mainMenu.cpp
                mainMenu.cpp:6:22: warning: extra tokens at end of #include directive
                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 -I"d:\QT\i
                nclude\QtCore" -I"d:\QT\include\QtCore" -I"d:\QT\include\QtGui" -I"d:\QT\include
                \QtGui" -I"d:\QT\include" -I"." -I"d:\QT\include\ActiveQt" -I"release" -I"." -I"
                d:\QT\mkspecs\win32-g++" -o release\intensite.o continu\intensite.cpp
                continu\intensite.cpp: In constructor `Intensite::Intensite(QWidget*)':
                continu\intensite.cpp:22: error: cannot convert `QString' to `QString*' in assig
                nment
                continu\intensite.cpp:23: error: cannot convert `QString' to `QString*' in assig
                nment
                continu\intensite.cpp: In member function `void Intensite::calculI()':
                continu\intensite.cpp:48: error: invalid operands of types `const char[16]' and
                `QString*' to binary `operator+'
                mingw32-make[1]: *** [release\intensite.o] Error 1
                mingw32-make[1]: Leaving directory `C:/programmations/Calculs_Electro'
                mingw32-make: *** [release] Error 2



                pourtant les variable :
                1. QString *string_tension, *string_resistance, *string_resultat;

                je suis obligé de les laisser en pointeur pour pouvoir les réutiliser non?
                • Partager sur Facebook
                • Partager sur Twitter
                :)

                [Qt4-Win] problème avec QLineEdit

                × 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