Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Creating a chart with multiple datas
QtWS25 Last Chance

Creating a chart with multiple datas

Scheduled Pinned Locked Moved Unsolved General and Desktop
qt5chart
29 Posts 3 Posters 4.0k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D deleted286

    Hi everyone. I have 4 different txt files. I want to read them and add them on a chart with a timer at the same time.
    Is there any easiest way to do it?
    I create 4 different read file function, and im thiking creating 4 different display chart function. Is it silly?

    Pl45m4P Offline
    Pl45m4P Offline
    Pl45m4
    wrote on last edited by
    #2

    @suslucoder said in Creating a chart with multiple datas:

    Is it silly

    If your files are similar, yes.
    (This got answered in your other threads. So I guess you dont need this one here?!)


    If debugging is the process of removing software bugs, then programming must be the process of putting them in.

    ~E. W. Dijkstra

    D 1 Reply Last reply
    0
    • Pl45m4P Pl45m4

      @suslucoder said in Creating a chart with multiple datas:

      Is it silly

      If your files are similar, yes.
      (This got answered in your other threads. So I guess you dont need this one here?!)

      D Offline
      D Offline
      deleted286
      wrote on last edited by
      #3

      @Pl45m4 is it correct?

      void MainWindow::Timer_Slot()
      {
          static float q_x=0;
          if(!queue.isEmpty())
          {
             double num=queue.dequeue();
             if (series->count()> 10)
                  series->removePoints(0, 1);
             q_x += 0.1;
             series->append(q_x, num);
             chart->scroll(10, 0);
             chart->update();
             qDebug() << q_x << num;
           }
          
          static float q_x2=0;
          if(!queue2.isEmpty())
          {
             double num2=queue2.dequeue();
             if(series2->count()>10)
                 series2->removePoints(0,1);
             q_x2 += 0.1;
             series2->append(q_x2, num2);
             chart->scroll(10, 0);
             chart->update();
             qDebug() << q_x2 << num2;
           }
          static float q_x3=0;
          if(!queue3.isEmpty())
          {
             double num3=queue3.dequeue();
             if(series3->count()>10)
                 series3->removePoints(0,1);
             q_x3 += 0.1;
             series3->append(q_x3, num3);
             chart->scroll(10, 0);
             chart->update();
             qDebug() << q_x3 << num3;
           }
          
          static float q_x4=0;
          if(!queue4.isEmpty())
          {
             double num4=queue4.dequeue();
             if(series4->count()>10)
                 series4->removePoints(0,1);
             q_x4 += 0.1;
             series4->append(q_x4, num4);
             chart->scroll(10, 0);
             //chart->update();
             qDebug() << q_x4 << num4;
           }
      }
      
      jsulmJ Pl45m4P 2 Replies Last reply
      0
      • D deleted286

        @Pl45m4 is it correct?

        void MainWindow::Timer_Slot()
        {
            static float q_x=0;
            if(!queue.isEmpty())
            {
               double num=queue.dequeue();
               if (series->count()> 10)
                    series->removePoints(0, 1);
               q_x += 0.1;
               series->append(q_x, num);
               chart->scroll(10, 0);
               chart->update();
               qDebug() << q_x << num;
             }
            
            static float q_x2=0;
            if(!queue2.isEmpty())
            {
               double num2=queue2.dequeue();
               if(series2->count()>10)
                   series2->removePoints(0,1);
               q_x2 += 0.1;
               series2->append(q_x2, num2);
               chart->scroll(10, 0);
               chart->update();
               qDebug() << q_x2 << num2;
             }
            static float q_x3=0;
            if(!queue3.isEmpty())
            {
               double num3=queue3.dequeue();
               if(series3->count()>10)
                   series3->removePoints(0,1);
               q_x3 += 0.1;
               series3->append(q_x3, num3);
               chart->scroll(10, 0);
               chart->update();
               qDebug() << q_x3 << num3;
             }
            
            static float q_x4=0;
            if(!queue4.isEmpty())
            {
               double num4=queue4.dequeue();
               if(series4->count()>10)
                   series4->removePoints(0,1);
               q_x4 += 0.1;
               series4->append(q_x4, num4);
               chart->scroll(10, 0);
               //chart->update();
               qDebug() << q_x4 << num4;
             }
        }
        
        jsulmJ Offline
        jsulmJ Offline
        jsulm
        Lifetime Qt Champion
        wrote on last edited by
        #4

        @suslucoder said in Creating a chart with multiple datas:

        is it correct?

        It's almost the same - you're still putting same code several times...
        Implement a method which gets the queue as parameter and put

        static float q_x=0;
            if(!queue.isEmpty())
            {
               double num=queue.dequeue();
               if (series->count()> 10)
                    series->removePoints(0, 1);
               q_x += 0.1;
               series->append(q_x, num);
               chart->scroll(10, 0);
               chart->update();
               qDebug() << q_x << num;
             }
        

        in that method. Then simply call this method for each queue. Simple, isn't it?

        https://forum.qt.io/topic/113070/qt-code-of-conduct

        D 1 Reply Last reply
        2
        • jsulmJ jsulm

          @suslucoder said in Creating a chart with multiple datas:

          is it correct?

          It's almost the same - you're still putting same code several times...
          Implement a method which gets the queue as parameter and put

          static float q_x=0;
              if(!queue.isEmpty())
              {
                 double num=queue.dequeue();
                 if (series->count()> 10)
                      series->removePoints(0, 1);
                 q_x += 0.1;
                 series->append(q_x, num);
                 chart->scroll(10, 0);
                 chart->update();
                 qDebug() << q_x << num;
               }
          

          in that method. Then simply call this method for each queue. Simple, isn't it?

          D Offline
          D Offline
          deleted286
          wrote on last edited by
          #5

          @jsulm But i have 4 different queue, all them should be parameter?

          Pl45m4P jsulmJ 2 Replies Last reply
          0
          • D deleted286

            @Pl45m4 is it correct?

            void MainWindow::Timer_Slot()
            {
                static float q_x=0;
                if(!queue.isEmpty())
                {
                   double num=queue.dequeue();
                   if (series->count()> 10)
                        series->removePoints(0, 1);
                   q_x += 0.1;
                   series->append(q_x, num);
                   chart->scroll(10, 0);
                   chart->update();
                   qDebug() << q_x << num;
                 }
                
                static float q_x2=0;
                if(!queue2.isEmpty())
                {
                   double num2=queue2.dequeue();
                   if(series2->count()>10)
                       series2->removePoints(0,1);
                   q_x2 += 0.1;
                   series2->append(q_x2, num2);
                   chart->scroll(10, 0);
                   chart->update();
                   qDebug() << q_x2 << num2;
                 }
                static float q_x3=0;
                if(!queue3.isEmpty())
                {
                   double num3=queue3.dequeue();
                   if(series3->count()>10)
                       series3->removePoints(0,1);
                   q_x3 += 0.1;
                   series3->append(q_x3, num3);
                   chart->scroll(10, 0);
                   chart->update();
                   qDebug() << q_x3 << num3;
                 }
                
                static float q_x4=0;
                if(!queue4.isEmpty())
                {
                   double num4=queue4.dequeue();
                   if(series4->count()>10)
                       series4->removePoints(0,1);
                   q_x4 += 0.1;
                   series4->append(q_x4, num4);
                   chart->scroll(10, 0);
                   //chart->update();
                   qDebug() << q_x4 << num4;
                 }
            }
            
            Pl45m4P Offline
            Pl45m4P Offline
            Pl45m4
            wrote on last edited by
            #6

            @suslucoder

            You just merged your four functions into one. This doesn't change the fact that you have redundant code.

            @jsulm was faster :)


            If debugging is the process of removing software bugs, then programming must be the process of putting them in.

            ~E. W. Dijkstra

            D 1 Reply Last reply
            0
            • Pl45m4P Pl45m4

              @suslucoder

              You just merged your four functions into one. This doesn't change the fact that you have redundant code.

              @jsulm was faster :)

              D Offline
              D Offline
              deleted286
              wrote on last edited by
              #7

              @Pl45m4 I've declared my queues in my header, does it matter?

              1 Reply Last reply
              0
              • D deleted286

                @jsulm But i have 4 different queue, all them should be parameter?

                Pl45m4P Offline
                Pl45m4P Offline
                Pl45m4
                wrote on last edited by
                #8

                @suslucoder said in Creating a chart with multiple datas:

                But i have 4 different queue, all them should be parameter?

                Just loop your queues.

                Bad:

                if(!queue1.isEmpty())
                    {
                       double num=queue1.dequeue();
                    }
                if(!queue2.isEmpty())
                    {
                       double num=queue2.dequeue();
                    }
                if(!queue3.isEmpty())
                    {
                       double num=queue3.dequeue();
                    }
                

                Better:

                // Container with all your data or just pass one QQueue after another to your function
                QVector<QQueue<double> > data;
                
                for(int i = 0; i < data.size(); i++)
                {
                   if(!data.at(i).isEmpty())
                    {
                       double num=data.at(i).dequeue();
                       // ...
                    }
                
                }
                

                If debugging is the process of removing software bugs, then programming must be the process of putting them in.

                ~E. W. Dijkstra

                1 Reply Last reply
                2
                • D deleted286

                  @jsulm But i have 4 different queue, all them should be parameter?

                  jsulmJ Offline
                  jsulmJ Offline
                  jsulm
                  Lifetime Qt Champion
                  wrote on last edited by
                  #9

                  @suslucoder said in Creating a chart with multiple datas:

                  But i have 4 different queue, all them should be parameter?

                  Yes, that's the idea:

                  void MainWindow::someMethod(const QQueue<double> &queue)
                  {
                  ...
                  }
                  ...
                  someMethod(queue);
                  someMethod(queue1);
                  someMethod(queue2);
                  someMethod(queue3);
                  

                  Or do it like @Pl45m4 suggested.

                  https://forum.qt.io/topic/113070/qt-code-of-conduct

                  D 1 Reply Last reply
                  2
                  • jsulmJ jsulm

                    @suslucoder said in Creating a chart with multiple datas:

                    But i have 4 different queue, all them should be parameter?

                    Yes, that's the idea:

                    void MainWindow::someMethod(const QQueue<double> &queue)
                    {
                    ...
                    }
                    ...
                    someMethod(queue);
                    someMethod(queue1);
                    someMethod(queue2);
                    someMethod(queue3);
                    

                    Or do it like @Pl45m4 suggested.

                    D Offline
                    D Offline
                    deleted286
                    wrote on last edited by
                    #10

                    @jsulm I understand it now. How about the reading part?
                    Can i do it like queue part?

                    jsulmJ 1 Reply Last reply
                    0
                    • D deleted286

                      @jsulm I understand it now. How about the reading part?
                      Can i do it like queue part?

                      jsulmJ Offline
                      jsulmJ Offline
                      jsulm
                      Lifetime Qt Champion
                      wrote on last edited by
                      #11

                      @suslucoder said in Creating a chart with multiple datas:

                      Can i do it like queue part?

                      Why not?

                      https://forum.qt.io/topic/113070/qt-code-of-conduct

                      D 1 Reply Last reply
                      0
                      • jsulmJ jsulm

                        @suslucoder said in Creating a chart with multiple datas:

                        Can i do it like queue part?

                        Why not?

                        D Offline
                        D Offline
                        deleted286
                        wrote on last edited by
                        #12

                        @jsulm is it true?

                        void MainWindow::ReadFile()
                        {
                              QFile file("/home/ilknur/Chart/Data1.txt");
                              QFile file2("/home/ilknur/Chart/Data2.txt");
                              QFile file3("/home/ilknur/Chart/Data3.txt");
                              QFile file4("/home/ilknur/Chart/Data4.txt");
                        
                               if(file.open(QIODevice::ReadOnly))
                               {
                                   QTextStream in(&file);
                                   while (!in.atEnd()) {
                                       QString line = in.readLine();
                                       QStringList list = line.split(QLatin1Char(' '), QString::SkipEmptyParts);
                                       for (const QString &entry : list)
                                       {
                                           double num = entry.toDouble();
                                           qDebug() << num;
                                           queue.enqueue(num);
                                       }
                                   }
                               }
                        
                               if(file2.open(QIODevice::ReadOnly))
                               {
                                   QTextStream in(&file2);
                                   while (!in.atEnd()) {
                                       QString line2 = in.readLine();
                                       QStringList list2 = line2.split(QLatin1Char(' '), QString::SkipEmptyParts);
                                       for (const QString &entry : list2)
                                       {
                                           double num2 = entry.toDouble();
                                           qDebug() << num2;
                                           queue2.enqueue(num2);
                                       }
                                   }
                               }
                        
                               if(file3.open(QIODevice::ReadOnly))
                               {
                                   QTextStream in(&file3);
                                   while (!in.atEnd()) {
                                       QString line3 = in.readLine();
                                       QStringList list3 = line3.split(QLatin1Char(' '), QString::SkipEmptyParts);
                                       for (const QString &entry : list3)
                                       {
                                           double num3 = entry.toDouble();
                                           qDebug() << num3;
                                           queue3.enqueue(num3);
                                       }
                                   }
                               }
                        
                               if(file4.open(QIODevice::ReadOnly))
                               {
                                   QTextStream in(&file4);
                                   while (!in.atEnd()) {
                                       QString line4 = in.readLine();
                                       QStringList list4 = line4.split(QLatin1Char(' '), QString::SkipEmptyParts);
                                       for (const QString &entry : list4)
                                       {
                                           double num4 = entry.toDouble();
                                           qDebug() << num4;
                                           queue4.enqueue(num4);
                                       }
                                   }
                               }
                        }
                        
                        jsulmJ Pl45m4P 2 Replies Last reply
                        0
                        • D deleted286

                          @jsulm is it true?

                          void MainWindow::ReadFile()
                          {
                                QFile file("/home/ilknur/Chart/Data1.txt");
                                QFile file2("/home/ilknur/Chart/Data2.txt");
                                QFile file3("/home/ilknur/Chart/Data3.txt");
                                QFile file4("/home/ilknur/Chart/Data4.txt");
                          
                                 if(file.open(QIODevice::ReadOnly))
                                 {
                                     QTextStream in(&file);
                                     while (!in.atEnd()) {
                                         QString line = in.readLine();
                                         QStringList list = line.split(QLatin1Char(' '), QString::SkipEmptyParts);
                                         for (const QString &entry : list)
                                         {
                                             double num = entry.toDouble();
                                             qDebug() << num;
                                             queue.enqueue(num);
                                         }
                                     }
                                 }
                          
                                 if(file2.open(QIODevice::ReadOnly))
                                 {
                                     QTextStream in(&file2);
                                     while (!in.atEnd()) {
                                         QString line2 = in.readLine();
                                         QStringList list2 = line2.split(QLatin1Char(' '), QString::SkipEmptyParts);
                                         for (const QString &entry : list2)
                                         {
                                             double num2 = entry.toDouble();
                                             qDebug() << num2;
                                             queue2.enqueue(num2);
                                         }
                                     }
                                 }
                          
                                 if(file3.open(QIODevice::ReadOnly))
                                 {
                                     QTextStream in(&file3);
                                     while (!in.atEnd()) {
                                         QString line3 = in.readLine();
                                         QStringList list3 = line3.split(QLatin1Char(' '), QString::SkipEmptyParts);
                                         for (const QString &entry : list3)
                                         {
                                             double num3 = entry.toDouble();
                                             qDebug() << num3;
                                             queue3.enqueue(num3);
                                         }
                                     }
                                 }
                          
                                 if(file4.open(QIODevice::ReadOnly))
                                 {
                                     QTextStream in(&file4);
                                     while (!in.atEnd()) {
                                         QString line4 = in.readLine();
                                         QStringList list4 = line4.split(QLatin1Char(' '), QString::SkipEmptyParts);
                                         for (const QString &entry : list4)
                                         {
                                             double num4 = entry.toDouble();
                                             qDebug() << num4;
                                             queue4.enqueue(num4);
                                         }
                                     }
                                 }
                          }
                          
                          jsulmJ Offline
                          jsulmJ Offline
                          jsulm
                          Lifetime Qt Champion
                          wrote on last edited by jsulm
                          #13

                          @suslucoder said in Creating a chart with multiple datas:

                          is it true?

                          Of course not!
                          You again copy same code several times.
                          You already was shown how to do this correctly, I'm not going to explain the same second time...

                          https://forum.qt.io/topic/113070/qt-code-of-conduct

                          D 1 Reply Last reply
                          0
                          • jsulmJ jsulm

                            @suslucoder said in Creating a chart with multiple datas:

                            is it true?

                            Of course not!
                            You again copy same code several times.
                            You already was shown how to do this correctly, I'm not going to explain the same second time...

                            D Offline
                            D Offline
                            deleted286
                            wrote on last edited by
                            #14

                            @jsulm Can you explain it please for last time :(

                            jsulmJ 1 Reply Last reply
                            0
                            • D deleted286

                              @jsulm Can you explain it please for last time :(

                              jsulmJ Offline
                              jsulmJ Offline
                              jsulm
                              Lifetime Qt Champion
                              wrote on last edited by
                              #15

                              @suslucoder No, I did it above already...

                              https://forum.qt.io/topic/113070/qt-code-of-conduct

                              1 Reply Last reply
                              0
                              • D deleted286

                                @jsulm is it true?

                                void MainWindow::ReadFile()
                                {
                                      QFile file("/home/ilknur/Chart/Data1.txt");
                                      QFile file2("/home/ilknur/Chart/Data2.txt");
                                      QFile file3("/home/ilknur/Chart/Data3.txt");
                                      QFile file4("/home/ilknur/Chart/Data4.txt");
                                
                                       if(file.open(QIODevice::ReadOnly))
                                       {
                                           QTextStream in(&file);
                                           while (!in.atEnd()) {
                                               QString line = in.readLine();
                                               QStringList list = line.split(QLatin1Char(' '), QString::SkipEmptyParts);
                                               for (const QString &entry : list)
                                               {
                                                   double num = entry.toDouble();
                                                   qDebug() << num;
                                                   queue.enqueue(num);
                                               }
                                           }
                                       }
                                
                                       if(file2.open(QIODevice::ReadOnly))
                                       {
                                           QTextStream in(&file2);
                                           while (!in.atEnd()) {
                                               QString line2 = in.readLine();
                                               QStringList list2 = line2.split(QLatin1Char(' '), QString::SkipEmptyParts);
                                               for (const QString &entry : list2)
                                               {
                                                   double num2 = entry.toDouble();
                                                   qDebug() << num2;
                                                   queue2.enqueue(num2);
                                               }
                                           }
                                       }
                                
                                       if(file3.open(QIODevice::ReadOnly))
                                       {
                                           QTextStream in(&file3);
                                           while (!in.atEnd()) {
                                               QString line3 = in.readLine();
                                               QStringList list3 = line3.split(QLatin1Char(' '), QString::SkipEmptyParts);
                                               for (const QString &entry : list3)
                                               {
                                                   double num3 = entry.toDouble();
                                                   qDebug() << num3;
                                                   queue3.enqueue(num3);
                                               }
                                           }
                                       }
                                
                                       if(file4.open(QIODevice::ReadOnly))
                                       {
                                           QTextStream in(&file4);
                                           while (!in.atEnd()) {
                                               QString line4 = in.readLine();
                                               QStringList list4 = line4.split(QLatin1Char(' '), QString::SkipEmptyParts);
                                               for (const QString &entry : list4)
                                               {
                                                   double num4 = entry.toDouble();
                                                   qDebug() << num4;
                                                   queue4.enqueue(num4);
                                               }
                                           }
                                       }
                                }
                                
                                Pl45m4P Offline
                                Pl45m4P Offline
                                Pl45m4
                                wrote on last edited by Pl45m4
                                #16

                                @suslucoder

                                QString file("/home/ilknur/Chart/Data1.txt");
                                // ...
                                // ...
                                // all your files
                                
                                void MainWindow::ReadFile(QString file)
                                {
                                  QFile(file);
                                
                                       if(file.open(QIODevice::ReadOnly))
                                       {
                                           QTextStream in(&file);
                                           while (!in.atEnd()) {
                                               QString line = in.readLine();
                                               QStringList list = line.split(QLatin1Char(' '), QString::SkipEmptyParts);
                                               for (const QString &entry : list)
                                               {
                                                   double num = entry.toDouble();
                                                   qDebug() << num;
                                                    // pick correct queue here
                                                   queue.enqueue(num);
                                               }
                                           }
                                       }
                                }
                                

                                Then just call this read function ones for every file you want to read (with the file path as argument)

                                ReadFile(file);
                                

                                Or even make a QStringList with all your filenames and call this function for every element of your list.

                                To write "good" and clean code (OOP programming) , you'll need to stop that linear thinking (like script language). And even most of the script languages nowadays have functions, which you can define, to avoid writing the same code over and over and over again.

                                Doing something X times != writing it X times.
                                It's all about effiency (trying to avoid unnecessary things that will waste time, space and hardware ressources at runtime)


                                If debugging is the process of removing software bugs, then programming must be the process of putting them in.

                                ~E. W. Dijkstra

                                D 1 Reply Last reply
                                1
                                • Pl45m4P Pl45m4

                                  @suslucoder

                                  QString file("/home/ilknur/Chart/Data1.txt");
                                  // ...
                                  // ...
                                  // all your files
                                  
                                  void MainWindow::ReadFile(QString file)
                                  {
                                    QFile(file);
                                  
                                         if(file.open(QIODevice::ReadOnly))
                                         {
                                             QTextStream in(&file);
                                             while (!in.atEnd()) {
                                                 QString line = in.readLine();
                                                 QStringList list = line.split(QLatin1Char(' '), QString::SkipEmptyParts);
                                                 for (const QString &entry : list)
                                                 {
                                                     double num = entry.toDouble();
                                                     qDebug() << num;
                                                      // pick correct queue here
                                                     queue.enqueue(num);
                                                 }
                                             }
                                         }
                                  }
                                  

                                  Then just call this read function ones for every file you want to read (with the file path as argument)

                                  ReadFile(file);
                                  

                                  Or even make a QStringList with all your filenames and call this function for every element of your list.

                                  To write "good" and clean code (OOP programming) , you'll need to stop that linear thinking (like script language). And even most of the script languages nowadays have functions, which you can define, to avoid writing the same code over and over and over again.

                                  Doing something X times != writing it X times.
                                  It's all about effiency (trying to avoid unnecessary things that will waste time, space and hardware ressources at runtime)

                                  D Offline
                                  D Offline
                                  deleted286
                                  wrote on last edited by
                                  #17

                                  @Pl45m4 where should i store

                                  QString file("/home/ilknur/Chart/Data1.txt");
                                  // ...
                                  // ...
                                  // all your files
                                  
                                  

                                  And i have 4 different files. In this case,

                                  QString file("/home/ilknur/FourLineChart/Data1.txt");
                                  QString file2("/home/ilknur/FourLineChart/Data2.txt");
                                  QString file3("/home/ilknur/FourLineChart/Data3.txt");
                                  QString file4("/home/ilknur/FourLineChart/Data4.txt");
                                  
                                  Pl45m4P 1 Reply Last reply
                                  0
                                  • D deleted286

                                    @Pl45m4 where should i store

                                    QString file("/home/ilknur/Chart/Data1.txt");
                                    // ...
                                    // ...
                                    // all your files
                                    
                                    

                                    And i have 4 different files. In this case,

                                    QString file("/home/ilknur/FourLineChart/Data1.txt");
                                    QString file2("/home/ilknur/FourLineChart/Data2.txt");
                                    QString file3("/home/ilknur/FourLineChart/Data3.txt");
                                    QString file4("/home/ilknur/FourLineChart/Data4.txt");
                                    
                                    Pl45m4P Offline
                                    Pl45m4P Offline
                                    Pl45m4
                                    wrote on last edited by
                                    #18

                                    @suslucoder said in Creating a chart with multiple datas:

                                    where should i store

                                    Do you even read what we wrote?

                                    @Pl45m4 said in Creating a chart with multiple datas:

                                    Then just call this read function ones for every file you want to read (with the file path as argument)
                                    ReadFile(file);

                                    Or even make a QStringList with all your filenames and call this function for every element of your list.

                                    ^


                                    If debugging is the process of removing software bugs, then programming must be the process of putting them in.

                                    ~E. W. Dijkstra

                                    D 1 Reply Last reply
                                    0
                                    • Pl45m4P Pl45m4

                                      @suslucoder said in Creating a chart with multiple datas:

                                      where should i store

                                      Do you even read what we wrote?

                                      @Pl45m4 said in Creating a chart with multiple datas:

                                      Then just call this read function ones for every file you want to read (with the file path as argument)
                                      ReadFile(file);

                                      Or even make a QStringList with all your filenames and call this function for every element of your list.

                                      ^

                                      D Offline
                                      D Offline
                                      deleted286
                                      wrote on last edited by
                                      #19

                                      @Pl45m4 said in

                                      Do you even read what we wrote?

                                      Of course. I just confused.

                                      QString file("/home/ilknur/FourLineChart/Data1.txt");
                                      QString file2("/home/ilknur/FourLineChart/Data2.txt");
                                      QString file3("/home/ilknur/FourLineChart/Data3.txt");
                                      QString file4("/home/ilknur/FourLineChart/Data4.txt");
                                      
                                      MainWindow::MainWindow(QWidget *parent)
                                         : QMainWindow(parent)
                                         , ui(new Ui::MainWindow)
                                      {
                                         ui->setupUi(this);
                                         CreateChart();
                                         ReadFile(file);
                                         ReadFile(file2);
                                         ReadFile(file3);
                                         ReadFile(file4);
                                      
                                      
                                      
                                      void MainWindow::ReadFile(QString file)
                                      {
                                             QFile(file);
                                      
                                            if(file.open(QIODevice::ReadOnly))
                                            {
                                                QTextStream in(&file);
                                                while (!in.atEnd()) {
                                                    QString line = in.readLine();
                                                    QStringList list = line.split(QLatin1Char(' '), QString::SkipEmptyParts);
                                                    for (const QString &entry : list)
                                                    {
                                                        double num = entry.toDouble();
                                                        qDebug() << num;
                                                         // pick correct queue here
                                                        queue.enqueue(num);
                                                    }
                                                }
                                            }
                                      }
                                      

                                      I miss something. But i dont know.

                                      jsulmJ 1 Reply Last reply
                                      0
                                      • D deleted286

                                        @Pl45m4 said in

                                        Do you even read what we wrote?

                                        Of course. I just confused.

                                        QString file("/home/ilknur/FourLineChart/Data1.txt");
                                        QString file2("/home/ilknur/FourLineChart/Data2.txt");
                                        QString file3("/home/ilknur/FourLineChart/Data3.txt");
                                        QString file4("/home/ilknur/FourLineChart/Data4.txt");
                                        
                                        MainWindow::MainWindow(QWidget *parent)
                                           : QMainWindow(parent)
                                           , ui(new Ui::MainWindow)
                                        {
                                           ui->setupUi(this);
                                           CreateChart();
                                           ReadFile(file);
                                           ReadFile(file2);
                                           ReadFile(file3);
                                           ReadFile(file4);
                                        
                                        
                                        
                                        void MainWindow::ReadFile(QString file)
                                        {
                                               QFile(file);
                                        
                                              if(file.open(QIODevice::ReadOnly))
                                              {
                                                  QTextStream in(&file);
                                                  while (!in.atEnd()) {
                                                      QString line = in.readLine();
                                                      QStringList list = line.split(QLatin1Char(' '), QString::SkipEmptyParts);
                                                      for (const QString &entry : list)
                                                      {
                                                          double num = entry.toDouble();
                                                          qDebug() << num;
                                                           // pick correct queue here
                                                          queue.enqueue(num);
                                                      }
                                                  }
                                              }
                                        }
                                        

                                        I miss something. But i dont know.

                                        jsulmJ Offline
                                        jsulmJ Offline
                                        jsulm
                                        Lifetime Qt Champion
                                        wrote on last edited by jsulm
                                        #20

                                        @suslucoder I really don't understand why it is so hard! Please try to figure out such trivial things by yourself.

                                        MainWindow::MainWindow(QWidget *parent)
                                           : QMainWindow(parent)
                                           , ui(new Ui::MainWindow)
                                        {
                                           ui->setupUi(this);
                                           CreateChart();
                                           QString file("/home/ilknur/FourLineChart/Data1.txt");
                                           QString file2("/home/ilknur/FourLineChart/Data2.txt");
                                           QString file3("/home/ilknur/FourLineChart/Data3.txt");
                                           QString file4("/home/ilknur/FourLineChart/Data4.txt");
                                           ReadFile(file);
                                           ReadFile(file2);
                                           ReadFile(file3);
                                           ReadFile(file4);
                                        

                                        Or shorter:

                                        
                                        MainWindow::MainWindow(QWidget *parent)
                                           : QMainWindow(parent)
                                           , ui(new Ui::MainWindow)
                                        {
                                           ui->setupUi(this);
                                           CreateChart();
                                           ReadFile("/home/ilknur/FourLineChart/Data1.txt");
                                           ReadFile("/home/ilknur/FourLineChart/Data2.txt");
                                           ReadFile("/home/ilknur/FourLineChart/Data3.txt");
                                           ReadFile("/home/ilknur/FourLineChart/Data4.txt");
                                        

                                        https://forum.qt.io/topic/113070/qt-code-of-conduct

                                        D 1 Reply Last reply
                                        0
                                        • jsulmJ jsulm

                                          @suslucoder I really don't understand why it is so hard! Please try to figure out such trivial things by yourself.

                                          MainWindow::MainWindow(QWidget *parent)
                                             : QMainWindow(parent)
                                             , ui(new Ui::MainWindow)
                                          {
                                             ui->setupUi(this);
                                             CreateChart();
                                             QString file("/home/ilknur/FourLineChart/Data1.txt");
                                             QString file2("/home/ilknur/FourLineChart/Data2.txt");
                                             QString file3("/home/ilknur/FourLineChart/Data3.txt");
                                             QString file4("/home/ilknur/FourLineChart/Data4.txt");
                                             ReadFile(file);
                                             ReadFile(file2);
                                             ReadFile(file3);
                                             ReadFile(file4);
                                          

                                          Or shorter:

                                          
                                          MainWindow::MainWindow(QWidget *parent)
                                             : QMainWindow(parent)
                                             , ui(new Ui::MainWindow)
                                          {
                                             ui->setupUi(this);
                                             CreateChart();
                                             ReadFile("/home/ilknur/FourLineChart/Data1.txt");
                                             ReadFile("/home/ilknur/FourLineChart/Data2.txt");
                                             ReadFile("/home/ilknur/FourLineChart/Data3.txt");
                                             ReadFile("/home/ilknur/FourLineChart/Data4.txt");
                                          
                                          D Offline
                                          D Offline
                                          deleted286
                                          wrote on last edited by
                                          #21

                                          @jsulm said in Creating a chart with multiple datas:

                                          MainWindow::MainWindow(QWidget *parent)
                                          : QMainWindow(parent)
                                          , ui(new Ui::MainWindow)
                                          {
                                          ui->setupUi(this);
                                          CreateChart();
                                          ReadFile("/home/ilknur/FourLineChart/Data1.txt");
                                          ReadFile("/home/ilknur/FourLineChart/Data2.txt");
                                          ReadFile("/home/ilknur/FourLineChart/Data3.txt");
                                          ReadFile("/home/ilknur/FourLineChart/Data4.txt");

                                          I've do it in that way and i have

                                          void MainWindow::ReadFile(QString file)
                                          {
                                                 QFile(file);
                                          
                                                 if(file.open(QIODevice::ReadOnly))
                                                 {
                                                     QTextStream in(&file);
                                                     while (!in.atEnd()) {
                                                         QString line = in.readLine();
                                                         QStringList list = line.split(QLatin1Char(' '), QString::SkipEmptyParts);
                                                         for (const QString &entry : list)
                                                         {
                                                             double num = entry.toDouble();
                                                             qDebug() << num;
                                                              // pick correct queue here
                                                             queue.enqueue(num);
                                                         }
                                                     }
                                                 }
                                          }
                                          

                                          I've got a lot of errors:

                                          : In member function ‘void MainWindow::ReadFile(QString)’:
                                          : error: declaration of ‘QFile file’ shadows a parameter
                                          error: declaration of ‘QFile file’ shadows a parameter
                                          QFile(file);
                                          ^

                                          jsulmJ 1 Reply Last reply
                                          0

                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved