Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. QList Verständnis Probleme
Forum Updated to NodeBB v4.3 + New Features

QList Verständnis Probleme

Scheduled Pinned Locked Moved Solved German
6 Posts 2 Posters 2.4k Views 1 Watching
  • 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.
  • G Offline
    G Offline
    Galilio
    wrote on last edited by
    #1

    Hallo,

    warum ist das falsch?
    QList <QwtPlot> qwtList = {qwtPlot1, qwtPlot2, qwtPlot3, qwtPlot4};
    oder beseer gefragt wie kann ich eine Liste von QwtPlot Curven.
    Es handelt sich um fast 30 Kurven und ich möchte nicht für jede Kurve eine Methode erstellen.
    Danke in voraus

    1 Reply Last reply
    0
    • ? Offline
      ? Offline
      A Former User
      wrote on last edited by
      #2

      Hallo! QwtPlot ist ein QWidget ist ein QObject. QObjecte können nicht kopiert werden. Also kannst du sie auch nicht in einem Behälter speichern. Was man da üblicherweise tut ist, dass man die Objekte auf dem heap erzeugt und im Behälter Zeiger auf diese Objekte hinterlegt. Nebenbei: QList will man eigentlich nicht mehr benutzen, im Zweifel immer QVector, std::vector oder auch std::array. Also: QVector<QwtPlot*> = ....

      1 Reply Last reply
      1
      • G Offline
        G Offline
        Galilio
        wrote on last edited by
        #3

        Hallo,

        ich bin so vorgegangen:
        Header File:

        QVector <QwtPlot*>  qwtPlotVec;
        //GET and SET
        QwtPlot* getQwtPlotter(int iplotNumber);
        void setQwtPlotter(QVector <QwtPlot*> qwtPlotVector);
        

        cppFile:

        void setQwtPlotter(QVector <QwtPlot*> qwtPlotVector)
        {
        	qwtPlotVector[0] = new QwtPlot(ui.groupBoxPlotX11); // Warum ist das nicht richtig?
        	qwtPlotVector.append(qwtPlotVector[0]);
        	qwtPlotVector[0]->setTitle(" ");
        
        }
        danke
        
        1 Reply Last reply
        0
        • G Offline
          G Offline
          Galilio
          wrote on last edited by Galilio
          #4

          Beim Compilieren ist alles Okay.
          Der Compiler zeigt mir kein Fehler. Erst beim Programm starten stürze die SW genau bei diesen Zeile:

          qwtPlotVector[0] = new QwtPlot(ui.groupBoxPlotX11);
          

          ab.
          Mir ist nicht ganz klar warum, da eigentlich qwtPlotVector[0] von Typ QwtPlot*

          Ich kriege einen ASSERT Problem:

          ASSERT failure in QVector<T>::operator[]: "index out of range", file c:\qt\4.7.4\include\qtcore\../../src/corelib/tools/qvector.h, line 347
          
          
          1 Reply Last reply
          0
          • ? Offline
            ? Offline
            A Former User
            wrote on last edited by
            #5

            @Galilio said in QList Verständnis Probleme:

            qwtPlotVector[0]

            Du kannst auf das Element an der Position 0 null zugreifen, wenn es vorhanden ist. Offensichtlich übergibst du der Funktion setQwtPlotter einen leeren QVector. Ein leerer QVector hat die Länge 0.

            qwtPlotVector.size() gibt die Länge zurück.

            Du kannst stattdessen folgendes machen:

            void setQwtPlotter(QVector <QwtPlot*> qwtPlotVector)
            {
                   // Erzeuge ein neues QwtPlot-Objekt und fügt einen Zeiger auf dieses Objekt an das Ende des Behälters an:
            	qwtPlotVector << new QwtPlot(ui.groupBoxPlotX11); 
            	qwtPlotVector[0]->setTitle(" "); // jetzt kann man darauf zugreifen
            
            }
            
            G 1 Reply Last reply
            1
            • ? A Former User

              @Galilio said in QList Verständnis Probleme:

              qwtPlotVector[0]

              Du kannst auf das Element an der Position 0 null zugreifen, wenn es vorhanden ist. Offensichtlich übergibst du der Funktion setQwtPlotter einen leeren QVector. Ein leerer QVector hat die Länge 0.

              qwtPlotVector.size() gibt die Länge zurück.

              Du kannst stattdessen folgendes machen:

              void setQwtPlotter(QVector <QwtPlot*> qwtPlotVector)
              {
                     // Erzeuge ein neues QwtPlot-Objekt und fügt einen Zeiger auf dieses Objekt an das Ende des Behälters an:
              	qwtPlotVector << new QwtPlot(ui.groupBoxPlotX11); 
              	qwtPlotVector[0]->setTitle(" "); // jetzt kann man darauf zugreifen
              
              }
              
              G Offline
              G Offline
              Galilio
              wrote on last edited by
              #6

              @Wieland
              Danke

              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