Partage
  • Partager sur Facebook
  • Partager sur Twitter

convertit QString en String

Sujet résolu
    18 juin 2018 à 17:12:27

    salut je travail sur un projet , je suis bloque pour le moment au niveau de recuperer le nom d'un fichier qui s'ecrit dans un QLineEdit je lis ce qu'est ecrit avec la methode text() qui renvoie un qstring et pour le convertir en string j'ai utilise la methode toStdString  , mais ca fonctionne pas , lorsque j'affiche sur le terminal la valuer convertit il s'affiche toujours le chiffre 1  , voila mon code :

    {
        MaFenetre *so = new MaFenetre;
        QString qs = so->Lire_LineEdit() ;
        std::string inputFileName = qs.toStdString();
        std::cout<< "le nom du fichier :"<<inputFileName<<endl ;
    }

    j'ai utilise la methode LireçLineEdit() qui lit ce qui ecrit sur LineEdit , puisque l'objet est dans un autre classe MaFenetre, j'ai teste aussi avec les methodes : 

    toUtf8().constData();
    toLocal8Bit().constData();

    mais j'ai toujours le même problème que la valeur convertie égal à le chiffre 1 ; et merci d'avance pour vos aides


    • Partager sur Facebook
    • Partager sur Twitter
      18 juin 2018 à 17:25:41

      Salut,

      Tu parle de la fonction Lire_LineEdit() de ta classe MaFenêtre, mais:

      1- quel est le prototype de cette fonction? qu'est-elle sensée renvoyer?

      2- es tu sur qu'elle renoie effectivement la donnée adéquate? comment est-elle implémentée ?

      • Partager sur Facebook
      • Partager sur Twitter
      Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
        18 juin 2018 à 17:27:15

        Bonjour,

        Je pense qu'il faudrais un peu plus de code pour comprendre, je pense à titre personnel que le problème viens de ta fonction "Lire_LineEdit()" mais je peu me tromper, pourrais t'on avoir plus de détails ?

        • Partager sur Facebook
        • Partager sur Twitter

        Am I dev ? 0x90

          18 juin 2018 à 17:29:07

          Hola !

          As-tu vérifié que Lire_LineEdit() renvoyait bien la bonne chaîne et non tout simplement 1 ?

          Edit : Tagada tagada voilà les Dalton !

          -
          Edité par Sillimon 18 juin 2018 à 17:30:47

          • Partager sur Facebook
          • Partager sur Twitter
            18 juin 2018 à 17:42:41

            voila le code de  Lire_LineEdit() :

                  QString Lire_LineEdit();
            QLineEdit*entry1;
                 QString MaFenetre::Lire_LineEdit(){
            
                    QString fileline = entry1->text();
            
                    return fileline ;
            
                }




            • Partager sur Facebook
            • Partager sur Twitter
              18 juin 2018 à 22:07:00

              sou hail a écrit:

              voila le code de  Lire_LineEdit() :

                    QString Lire_LineEdit();
              QLineEdit*entry1;
                   QString MaFenetre::Lire_LineEdit(){
              
                      QString fileline = entry1->text();
              
                      return fileline ;
              
                  }

              Pourquoi faire simple quand on peut faire compliqué?

              pourquoi pas tout simplement l'implémenter sous la forme de

              QString MaFenetre::Lire_LineEdit(){
                  return entry1->text();
              }




              • Partager sur Facebook
              • Partager sur Twitter
              Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
                18 juin 2018 à 22:45:39

                koala01 a écrit:

                sou hail a écrit:

                voila le code de  Lire_LineEdit() :

                      QString Lire_LineEdit();
                QLineEdit*entry1;
                     QString MaFenetre::Lire_LineEdit(){
                
                        QString fileline = entry1->text();
                
                        return fileline ;
                
                    }

                Pourquoi faire simple quand on peut faire compliqué?

                pourquoi pas tout simplement l'implémenter sous la forme de

                QString MaFenetre::Lire_LineEdit(){
                    return entry1->text();
                }



                ah oui tu as raison j'ai comlique les choses , je vais le faire et j'espere qu'il va fonctionner

                • Partager sur Facebook
                • Partager sur Twitter
                  18 juin 2018 à 23:11:06

                  Attention, ce n'est pas la cause de ton problème...

                  Normalement, un code aussi simple que

                  std::string str = so->Lire_LineEdit().toStdString();
                  /* ... */

                  devrait déjà faire l'affaire.  Si tu obtiens "1", dans str, peut-être est-ce "simplement" parce que... entry1 (dans ta fenêtre) affiche... 1 ;)

                  Et si ce n'est pas le cas, c'est qu'il y a un problème "ailleurs"...

                  Ma boule de crystal me fait d'ailleurs dire que cela pourrait être dans le constructeur de MaFenetre... 

                  le code qui crée entry1 ne prendrait-il pas une forme proche de

                  QLineEdit *entry1 = new QLineEdit(/*..*/);

                  alors que entry1 serait déclaré sous la forme de

                  QLineEdit * entry1;

                  dans la définition de ta classe MaFenetre????



                  • Partager sur Facebook
                  • Partager sur Twitter
                  Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
                    19 juin 2018 à 9:54:08

                    koala01 a écrit:

                    Attention, ce n'est pas la cause de ton problème...

                    Normalement, un code aussi simple que

                    std::string str = so->Lire_LineEdit().toStdString();
                    /* ... */

                    devrait déjà faire l'affaire.  Si tu obtiens "1", dans str, peut-être est-ce "simplement" parce que... entry1 (dans ta fenêtre) affiche... 1 ;)

                    Et si ce n'est pas le cas, c'est qu'il y a un problème "ailleurs"...

                    Ma boule de crystal me fait d'ailleurs dire que cela pourrait être dans le constructeur de MaFenetre... 

                    le code qui crée entry1 ne prendrait-il pas une forme proche de

                    QLineEdit *entry1 = new QLineEdit(/*..*/);

                    alors que entry1 serait déclaré sous la forme de

                    QLineEdit * entry1;

                    dans la définition de ta classe MaFenetre????



                    pour la declaration de entry1 j'ai fait : 

                        QLineEdit *entry1;
                     entry1 = new QLineEdit;  

                    je pense pas que entry1 affiche 1 puisque j'ai crée un autre méthode de la classe MaFenetre qui return ce qu'est écrit sur entry1 et le mettre comme texte d'un autre bouton et fonctionne bien aussi j'ai fait la conversion dans la classe MaFenetre et je l'affiche sur console tout bien marche, donc le probleme vient de le fait d'utiliser une methode d'une autre classe et je sais pas comment resoudre ce probleme  

                    -
                    Edité par sou hail 19 juin 2018 à 10:43:55

                    • Partager sur Facebook
                    • Partager sur Twitter
                      19 juin 2018 à 11:44:58

                      Au pire debug pour voir la valeur du QString avant passage de ta fonction..

                      Sinon remplace 

                      std::cout<< "le nom du fichier :" <<inputFileName<<endl; 

                      par : 

                      qDebug << qs

                      qDebug devrait accepter le QString. 

                      • Partager sur Facebook
                      • Partager sur Twitter
                        19 juin 2018 à 11:50:12

                        Didy7 a écrit:

                        Au pire debug pour voir la valeur du QString avant passage de ta fonction..

                        Sinon remplace 

                        std::cout<< "le nom du fichier :" <<inputFileName<<endl; 

                        par : 

                        qDebug << qs
                        Je le fait et je trouve mnt que return est vide

                        -
                        Edité par sou hail 19 juin 2018 à 11:55:56

                        • Partager sur Facebook
                        • Partager sur Twitter
                          19 juin 2018 à 11:57:46

                          Une rapide recherche sur google aurais été plus rapide que de poser la question ici mais bon.. lien.

                          • Partager sur Facebook
                          • Partager sur Twitter

                          Am I dev ? 0x90

                            19 juin 2018 à 12:01:04

                            cyp86 a écrit:

                            Une rapide recherche sur google aurais été plus rapide que de poser la question ici mais bon.. lien.


                            j'ai deja fait recherche sur google mais j'ai rien trouver
                            • Partager sur Facebook
                            • Partager sur Twitter
                              19 juin 2018 à 13:34:14

                              Pour plus de clarté, évites d'éditer un message (sans le préciser). Préfère poster un autre message sinon on ne s'y retrouve plus :). 

                              Je le fait et je trouve mnt que return est vide

                              Quel return ? Quel manipulation as-tu fait ? As-tu affiché la variable qs ? Quel est le résultat ? Soit plus clair s'il te plait. 

                              • Partager sur Facebook
                              • Partager sur Twitter
                                19 juin 2018 à 14:04:06

                                Didy7 a écrit:

                                Pour plus de clarté, évites d'éditer un message (sans le préciser). Préfère poster un autre message sinon on ne s'y retrouve plus :). 

                                Je le fait et je trouve mnt que return est vide

                                Quel return ? Quel manipulation as-tu fait ? As-tu affiché la variable qs ? Quel est le résultat ? Soit plus clair s'il te plait. 

                                la resultat de cconversion qui est vide : 

                                std::string inputFileName = qs.toStdString();
                                    std::cout<< "le nom du fichier :"<<inputFileName<<endl ;

                                sur la console il s'affiche : 

                                le nom du fichier : 
                                
                                

                                il lit pas ce qui est écrit sur LineEdit , et lorsque je le teste la même fonction dans la classe MaFenetre il fonctionne très bien 

                                -
                                Edité par sou hail 19 juin 2018 à 16:57:46

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  19 juin 2018 à 16:14:35

                                  Salut,

                                  sou hail a écrit:

                                  voila mon code :

                                  {
                                      MaFenetre *so = new MaFenetre;
                                      QString qs = so->Lire_LineEdit() ;
                                      std::string inputFileName = qs.toStdString();
                                      std::cout<< "le nom du fichier :"<<inputFileName<<endl ;
                                  }

                                  j'ai utilise la methode LireçLineEdit() qui lit ce qui ecrit sur LineEdit , puisque l'objet est dans un autre classe MaFenetre

                                  Selon toi,

                                  • à quel moment devrait-on aller chercher la valeur saisie dans le QLineEdit pour l'afficher ?
                                  • à quel moment ton cout "le nom du fichier" s'affiche-t-il ?

                                  Ces deux moments sont-ils les mêmes ? ;)

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    19 juin 2018 à 16:17:15

                                    Squall31 a écrit:

                                    Salut,

                                    sou hail a écrit:

                                    voila mon code :

                                    {
                                        MaFenetre *so = new MaFenetre;
                                        QString qs = so->Lire_LineEdit() ;
                                        std::string inputFileName = qs.toStdString();
                                        std::cout<< "le nom du fichier :"<<inputFileName<<endl ;
                                    }

                                    j'ai utilise la methode LireçLineEdit() qui lit ce qui ecrit sur LineEdit , puisque l'objet est dans un autre classe MaFenetre

                                    Selon toi,

                                    • à quel moment devrait-on aller chercher la valeur saisie dans le QLineEdit pour l'afficher ?
                                    • à quel moment ton cout "le nom du fichier" s'affiche-t-il ?

                                    Ces deux moments sont-ils les mêmes ? ;)


                                    • je fais un connexion entre ce slot et le signal clicked d'un bouton ,lorsque je clique sur le bouton il lit la valeur de entry1 et affiche le apres 

                                    -
                                    Edité par sou hail 19 juin 2018 à 16:17:33

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      19 juin 2018 à 17:02:25

                                      Quel slot ? Et quel est le code exact de ce slot ?

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        19 juin 2018 à 17:13:14

                                        Squall31 a écrit:

                                        Quel slot ? Et quel est le code exact de ce slot ?


                                        le slot readingQata : 

                                        std::vector<point> Classe2::readingData{
                                        MaFenetre so ;
                                        QString qs = so.Lire_LineEdit() ;
                                        std::string inputFileName = qs.toStdString();
                                        std::cout<< "le nom du fichier :"<<inputFileName ;
                                        }


                                        et lorsque je tape le nom sur QLineEdit et je clique sur le bouton , sur la console il s'affiche que : 

                                        le nom du fichier :
                                        donc comme il trouve rien sur QLineEdit et en plus lorsque j'ecris : 
                                        std::cout<< "le nom du fichier :"<<inputFileName<<endl ; 
                                        il s'affiche sur la console : 
                                        le nom du fichier : 1

                                        -
                                        Edité par sou hail 19 juin 2018 à 17:19:00

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          19 juin 2018 à 17:16:49

                                          Bon, comme tu ne nous a jamais montré que des bouts de code sans queue ni tête, commencons par le commencement:

                                          Pourrais tu nous donner:

                                          - 1 la définition complete de ta classe MaFenêtre

                                          - 2 le code complet de son construteur

                                          - 3 la définition complète de la classe qui contient cette fonction membre ou, à défaut

                                          - 4 la définition complète de la fonction libre qui pose problème

                                          Car, tant que l'on n'aura pas tout cela, on ne pourra que jouer aux devinettes, et tu n'obtiendras donc pas une aide aussi efficace que possible ;)

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
                                            19 juin 2018 à 17:29:20

                                            Mes questions restent sans réponse :(

                                            MaFenetre so ; // Création d'une NOUVELLE fenêtre
                                                           // fenêtre, qui n'est même pas affichée

                                            Donc qu'espères-tu en retirer à partir de là ?

                                            Non sans compter que la première ligne n'est même pas valide. Comme koala01, j'espère un minimum d'effort de ta part pour nous présenter convenablement ton problème.

                                            -
                                            Edité par Squall31 19 juin 2018 à 17:31:49

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              19 juin 2018 à 17:34:59

                                              koala01 a écrit:

                                              Bon, comme tu ne nous a jamais montré que des bouts de code sans queue ni tête, commencons par le commencement:

                                              Pourrais tu nous donner:

                                              - 1 la définition complete de ta classe MaFenêtre

                                              - 2 le code complet de son construteur

                                              - 3 la définition complète de la classe qui contient cette fonction membre ou, à défaut

                                              - 4 la définition complète de la fonction libre qui pose problème

                                              Car, tant que l'on n'aura pas tout cela, on ne pourra que jouer aux devinettes, et tu n'obtiendras donc pas une aide aussi efficace que possible ;)

                                              MaFenetre.h 

                                              //include
                                              using namespace QtDataVisualization;
                                              class MaFenetre : public QWidget
                                              {  Q_OBJECT
                                                  public:
                                                  MaFenetre();
                                              public :
                                                    QString Lire_LineEdit();
                                                  private:
                                                  QLineEdit *entry1;
                                                  QGridLayout *grid1;
                                              }

                                              MaFenetre.cpp

                                              MaFenetre::MaFenetre() : QWidget()
                                              {
                                              grid1 = new QGridLayout ;
                                              entry1 = new QLineEdit;
                                              grid1 ->addWidget(entry1,0,0,1,4);
                                                  QtDataVisualization::Q3DScatter *graph = new QtDataVisualization::Q3DScatter();
                                                  QWidget *container = QWidget::createWindowContainer(graph);
                                                  Code *modifier = new Code(graph);
                                                  BoitePage->addWidget(container);
                                              
                                               MaFenetre::connect(uploaddata, SIGNAL(clicked(bool)),modifier,SLOT(readingData()));
                                                   MaFenetre::connect(uploaddata, SIGNAL(clicked(bool)),modifier, SLOT(addData()));
                                              }
                                              
                                                   QString MaFenetre::Lire_LineEdit(){
                                              
                                                        return entry1->text();
                                              }
                                              
                                              

                                              Code.h

                                              using namespace QtDataVisualization ;
                                              
                                              class Code : public QObject {
                                                  Q_OBJECT
                                              public :
                                                 explicit Code(Q3DScatter *scatter);
                                              public slots :
                                              
                                                         std::vector<point> readingData();
                                                         void addData();
                                              }

                                              Code.cpp

                                              using namespace QtDataVisualization ;
                                              Code::Code(Q3DScatter *scatter)  : m_graph(scatter),
                                              {
                                              
                                                  m_graph->activeTheme()->setType(Q3DTheme::Theme(1));
                                              
                                                  m_graph->axisX()->setTitle("X");
                                                  m_graph->axisY()->setTitle("Y");
                                                  m_graph->axisZ()->setTitle("Z");
                                              }
                                              
                                              std::vector<point> Code::readingData() {
                                                  MaFenetre so ;
                                                  QString qs = so.Lire_LineEdit();
                                                  qDebug() <<qs;
                                                  std::string inputFileName = qs.toStdString();
                                                  //std::cout<< "le nom du fichier :"<<inputFileName<<endl;
                                                  std::vector<point> inputData;
                                                  std::string line, token;
                                                  point newPoint;
                                                  std::ifstream file;
                                                  file.open(inputFileName.c_str(), std::ifstream::in);
                                                  if (file.is_open())
                                                  {
                                                      while (getline(file, line))
                                                      {
                                                          std::istringstream ss(line);
                                                          getline(ss, token, ' ');
                                                          newPoint.x = stod(token);
                                                         // getline(ss, token, ' ');
                                                          newPoint.y = stod(token);
                                                          //getline(ss, token, ' ');
                                                          newPoint.z = stod(token);
                                                          inputData.push_back(newPoint);
                                                          //std::cout << inputData.at(2).x << endl;
                                                      }
                                              
                                                  }
                                                  else
                                                      std::cout << "Unable to open file";
                                                  file.close();
                                                  return inputData ;
                                              
                                              }
                                              
                                              
                                              void Code::addData(){
                                              
                                              
                                              
                                                  QScatterDataProxy *proxy = new QScatterDataProxy;
                                                  QtDataVisualization::QScatter3DSeries *series = new QtDataVisualization::QScatter3DSeries(proxy);
                                                  std::vector<point> inputData = Code::readingData();
                                                  QtDataVisualization::QScatterDataArray data;
                                              
                                                  for (int i=0; i<inputData.size();i++)
                                                   {
                                                    data << QVector3D(inputData.at(i).x , inputData.at(i).y , inputData.at(i).z);
                                                    data.push_back(QtDataVisualization::QScatterDataItem(QVector3D(inputData.at(i).x,inputData.at(i).y,inputData.at(i).z)));
                                                   };
                                                  series->dataProxy()->addItems(data);
                                                  m_graph->addSeries(series);
                                              }
                                              








                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                19 juin 2018 à 17:55:39

                                                J'avouerai que là, j'ai quand même un peu de mal ...

                                                Car c'est ton code qui construit ta fenêtre, et ca, c'est pas vraiment normal :p

                                                Et non seulement il la construit une fois (chose que j'aurais éventuelllement pu accepter, à condition que tu m'en donne la raison), mais il va la construire à  chaque fois que la fonction readingData sera appelée (et la détruire lorsque cette fonction arrivera à son terme).  Et ca, c'est clairement pas la meilleure des choses à faire.

                                                Car, du coup, quelle que soit la manière dont tu arrives à faire appel à la fonction readingData depuis ton instance de MaFenêtre, il faut te rendre compte que la fonction readingData utilise une instance de MaFenêtre qui n'a strictement rien à voir avec l'instance au départ de laquelle readingData a été appelée!!!

                                                Il est donc tout à fait normal que la récupération du texte de ton QLineEdit renvoie... la valeur qui se trouve dans ce QLineEdit juste après la création de cette nouvelle instance ;)

                                                -
                                                Edité par koala01 19 juin 2018 à 18:00:15

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
                                                  19 juin 2018 à 20:51:46

                                                  koala01 a écrit:

                                                  J'avouerai que là, j'ai quand même un peu de mal ...

                                                  Car c'est ton code qui construit ta fenêtre, et ca, c'est pas vraiment normal :p

                                                  Et non seulement il la construit une fois (chose que j'aurais éventuelllement pu accepter, à condition que tu m'en donne la raison), mais il va la construire à  chaque fois que la fonction readingData sera appelée (et la détruire lorsque cette fonction arrivera à son terme).  Et ca, c'est clairement pas la meilleure des choses à faire.

                                                  Car, du coup, quelle que soit la manière dont tu arrives à faire appel à la fonction readingData depuis ton instance de MaFenêtre, il faut te rendre compte que la fonction readingData utilise une instance de MaFenêtre qui n'a strictement rien à voir avec l'instance au départ de laquelle readingData a été appelée!!!

                                                  Il est donc tout à fait normal que la récupération du texte de ton QLineEdit renvoie... la valeur qui se trouve dans ce QLineEdit juste après la création de cette nouvelle instance ;)

                                                  -
                                                  Edité par koala01 il y a environ 1 heure

                                                  moi je creer ma fenetre dans le main ds readingData tu as raison j'ai cree la 2eme objet fenetre car je trouve pas autre solution de faire appelle a la fonction Lire_LineEdit() 

                                                  pour lire ce qui est sur LineEdit , sinon tu me conseille de quoi faire pour résoudre le probleme

                                                  -
                                                  Edité par sou hail 19 juin 2018 à 20:52:08

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    19 juin 2018 à 21:14:04

                                                    Passe ta fenetre en parametre ( reference ) de lire_lineedit -> lire_lineedit(*TaFenetre)
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      19 juin 2018 à 21:54:19

                                                      A vrai dire, je verrais plutôt quelque chose comme
                                                      class MaFenetre : public QWidget
                                                      {  Q_OBJECT
                                                          public:
                                                          MaFenetre();
                                                      public :
                                                      public slots:
                                                             /* C'est la fenêtre qui décide de  lire les informations
                                                             void onReadData();
                                                          private:
                                                          QLineEdit *entry1;
                                                          QGridLayout *grid1;
                                                      }
                                                      class Code : public QObject {
                                                          Q_OBJECT
                                                      public :
                                                         explicit Code(Q3DScatter *scatter, );
                                                      
                                                          /*Quand on demande de lire un fichier, on
                                                           * en indique le nom
                                                           */
                                                          std::vector<point> readingData(QString filename);
                                                      public slots :
                                                          void addData();
                                                      private:
                                                      }
                                                      std::vector<point> Code::readingData(QString filname) {
                                                          std::string inputFileName = filname.toStdString();
                                                          /* ... la suite */
                                                       
                                                      }
                                                      MaFenetre::MaFenetre() : QWidget()
                                                      {
                                                          /* tout ce qu'il faut 
                                                           * ... 
                                                           */
                                                       
                                                       MaFenetre::connect(uploaddata,&QPushButton::clicked,
                                                                           this,&MaFenetre::onReadData);
                                                      }
                                                      
                                                      void MaFenetre::onReadData(){
                                                          /* on crée un code */
                                                          Code code(/* paramètres requis*/);
                                                          /* et on lui demande de lire un fichier 
                                                           * dont on récupère le nom depuis entry1
                                                           */
                                                          auto result = code.readingData(entry1->text());
                                                          /* on fait "ce qu'il faut" du résultat*/
                                                      }
                                                      C'est simple, c'est efficace, et cela ne risque pas de casser ;)

                                                      -
                                                      Edité par koala01 20 juin 2018 à 17:15:47

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                      Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
                                                        19 juin 2018 à 22:04:32

                                                        koala01 a écrit:

                                                        A vrai dire, je verrais plutôt quelque chose comme

                                                        class Code;
                                                        class MaFenetre : public QWidget
                                                        {  Q_OBJECT
                                                            public:
                                                            MaFenetre();
                                                        public :
                                                              QString Lire_LineEdit();
                                                        public slots:
                                                               /* C'est la fenêtre qui décide de  lire les informations
                                                               void onReadData();
                                                            private:
                                                            QLineEdit *entry1;
                                                            QGridLayout *grid1;
                                                            Code * code; // la fenêtre connait le code
                                                        }
                                                        class Code : public QObject {
                                                            Q_OBJECT
                                                        public :
                                                           explicit Code(Q3DScatter *scatter, );
                                                        
                                                            /*Quand on demande de lire un fichier, on
                                                             * en indique le nom
                                                             */
                                                            std::vector<point> readingData(QString filename);
                                                        public slots :
                                                            void addData();
                                                        private:
                                                        }
                                                        std::vector<point> Code::readingData(QString filname) {
                                                            std::string inputFileName = filname.toStdString();
                                                            /* ... la suite */
                                                         
                                                        }
                                                        MaFenetre::MaFenetre() : QWidget()
                                                        {
                                                            /* tout ce qu'il faut 
                                                             * ... 
                                                             */
                                                         
                                                         MaFenetre::connect(uploaddata,&QPushButton::clicked,
                                                                             this,&MaFenetre::onReadData);
                                                        }
                                                        
                                                        void MaFenetre::onReadData(){
                                                            /* on crée un code */
                                                            Code code(/* paramètres requis*/);
                                                            /* et on lui demande de lire un fichier 
                                                             * dont on récupère le nom depuis entry1
                                                             */
                                                            auto result = code.readingData(entry1->text());
                                                            /* on fait "ce qu'il faut" du résultat*/
                                                        }

                                                        C'est simple, c'est efficace, et cela ne risque pas de casser ;)

                                                        ok merci beaucoup aussi j'ai reflicher de mettre classe code qui herite deMaFenetre je pense ca aussi ca va fonctionner , et merci bcp pour ton aide

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          20 juin 2018 à 16:52:29

                                                          koala01 a écrit:

                                                          class Code;

                                                          class MaFenetre : public QWidget
                                                          {  Q_OBJECT
                                                              ...
                                                              Code * code; // la fenêtre connait le code
                                                          }
                                                          void MaFenetre::onReadData(){
                                                              Code code(/* paramètres requis*/);
                                                              ...
                                                          }

                                                          Tu n'aurais pas changé d'avis pendant l'écriture par hasard ? :p

                                                          Étant donné le code du slot, ce membre ne sert à rien.

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            20 juin 2018 à 17:14:16

                                                            Squall31 a écrit:

                                                            koala01 a écrit:

                                                            class Code;

                                                            class MaFenetre : public QWidget
                                                            {  Q_OBJECT
                                                                ...
                                                                Code * code; // la fenêtre connait le code
                                                            }
                                                            void MaFenetre::onReadData(){
                                                                Code code(/* paramètres requis*/);
                                                                ...
                                                            }

                                                            Tu n'aurais pas changé d'avis pendant l'écriture par hasard ? :p

                                                            Étant donné le code du slot, ce membre ne sert à rien.

                                                            Si au temps pour moi ... je corrige le code ;)

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                            Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait

                                                            convertit QString en String

                                                            × 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