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 / Qlistwidget synchron halten
Forum Updated to NodeBB v4.3 + New Features

QList / Qlistwidget synchron halten

Scheduled Pinned Locked Moved Unsolved German
6 Posts 2 Posters 3.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 Offline
    D Offline
    deleted516
    wrote on last edited by
    #1

    Hallo alle zusammen,
    ich mache derzeit eine Projektarbeit für meine Hochschule dabei soll ich in QT ein Programm schreiben.(noch nie damit gearbeitet und nicht im Unterricht gehabt.)
    Derzeit habe ich nur die Grundkenntnisse der C++ Programmierung und versuche mich durch etliche Tutorials und der QT-Dokumentation um mein Projekt zu realisieren.
    Bisher hat alles geklappt nur ich hänge jetzt an einem Thema fest.

    Nämlich ich habe eine Klasse cEintrag die Personendaten speichert mit get und set methoden.
    Habe einen Dialog gemacht der mir ein Objekt mit diesen Daten speichert.
    Dieses lege ich in ein QList<cEintrag*> rein.

    Mein Plan ist es in dem mainwindow ein Qlistwidget einzusetzen wo meine nur der Name und der Vorname erscheint und durch Klicken auf den jeweiligen Namen die Daten in Textedits angezeigt werden.

    //Daten in Liste einsetzen
    void MainWindow::addElement(cEintrag *neuerKontakt)
    {
        liste.append(neuerKontakt);
        // Überprüfung in der Konsole ob Funktion ausgeführt wird
        qDebug()<<"Add Element hinzugefügt";
    
    }
    //Daten in die ListWidget einsetzen
    void MainWindow::addItemtoList(cEintrag *neuerKontakt){
        ui->listWidget->addItem(neuerKontakt->getName()+", "+neuerKontakt->getvName());
    
    }
    

    Als nächstes habe ich einen Slot erstellt wo ich ein Element aus der Liste auswähle und mir dann die Daten von dem Jeweiligen angeklickten Namen in die jeweiligen Textfelder angezeigt werden sollen!!!

    void MainWindow::on_listWidget_itemPressed(QListWidgetItem *item){
    
        ui->textEdit->setText(liste.at(ui->listWidget->currentRow())->getName());
        ui->textEdit_2->setText(liste.at(ui->listWidget->currentRow())->getvName());
        ui->textEdit_3->setText(liste.at(ui->listWidget->currentRow())->getAdresse());
        ui->textEdit_4->setText(liste.at(ui->listWidget->currentRow())->getTelPrivat());
        ui->textEdit_5->setText(liste.at(ui->listWidget->currentRow())->getTelArbeit());
        ui->textEdit_6->setText(liste.at(ui->listWidget->currentRow())->getFax());
        ui->textEdit_7->setText(liste.at(ui->listWidget->currentRow())->getEmail());
    
    }
    

    Das Sieht dann so aus:

    2_1514120692824_Screenshot 2017-12-24 14.04.34.png 1_1514120692823_Screenshot 2017-12-24 14.04.32.png 0_1514120692823_Screenshot 2017-12-24 14.04.30.png
    Wie ihr nun sehen könnt sind meine Listen nicht synchron von der Reihenfolge her, das liegt auch daran das ich das listwidget.sortigEnabled auf true hab.
    Lass ich das Sortieren raus dann funktioniert das mit der Reihenfolge da die Position in meiner Liste mit der Position des Listwidget ist.

    Habt ihr eine Idee wie ich die beiden Listen synchron halten kann.
    Oder gibt es eine Möglichkeit nur mit einer Liste zu arbeiten?

    Ich hoffe ich konnte mein Problem verständlich erklären.

    Falls ihr noch Rückfragen habt oder noch mehr Code braucht, dann stehe ich euch jederzeit zur Verfügung und Danke euch schon mal im Voraus.

    Liebe Grüße und Frohe Weihnachten

    aha_1980A 1 Reply Last reply
    0
    • D deleted516

      Hallo alle zusammen,
      ich mache derzeit eine Projektarbeit für meine Hochschule dabei soll ich in QT ein Programm schreiben.(noch nie damit gearbeitet und nicht im Unterricht gehabt.)
      Derzeit habe ich nur die Grundkenntnisse der C++ Programmierung und versuche mich durch etliche Tutorials und der QT-Dokumentation um mein Projekt zu realisieren.
      Bisher hat alles geklappt nur ich hänge jetzt an einem Thema fest.

      Nämlich ich habe eine Klasse cEintrag die Personendaten speichert mit get und set methoden.
      Habe einen Dialog gemacht der mir ein Objekt mit diesen Daten speichert.
      Dieses lege ich in ein QList<cEintrag*> rein.

      Mein Plan ist es in dem mainwindow ein Qlistwidget einzusetzen wo meine nur der Name und der Vorname erscheint und durch Klicken auf den jeweiligen Namen die Daten in Textedits angezeigt werden.

      //Daten in Liste einsetzen
      void MainWindow::addElement(cEintrag *neuerKontakt)
      {
          liste.append(neuerKontakt);
          // Überprüfung in der Konsole ob Funktion ausgeführt wird
          qDebug()<<"Add Element hinzugefügt";
      
      }
      //Daten in die ListWidget einsetzen
      void MainWindow::addItemtoList(cEintrag *neuerKontakt){
          ui->listWidget->addItem(neuerKontakt->getName()+", "+neuerKontakt->getvName());
      
      }
      

      Als nächstes habe ich einen Slot erstellt wo ich ein Element aus der Liste auswähle und mir dann die Daten von dem Jeweiligen angeklickten Namen in die jeweiligen Textfelder angezeigt werden sollen!!!

      void MainWindow::on_listWidget_itemPressed(QListWidgetItem *item){
      
          ui->textEdit->setText(liste.at(ui->listWidget->currentRow())->getName());
          ui->textEdit_2->setText(liste.at(ui->listWidget->currentRow())->getvName());
          ui->textEdit_3->setText(liste.at(ui->listWidget->currentRow())->getAdresse());
          ui->textEdit_4->setText(liste.at(ui->listWidget->currentRow())->getTelPrivat());
          ui->textEdit_5->setText(liste.at(ui->listWidget->currentRow())->getTelArbeit());
          ui->textEdit_6->setText(liste.at(ui->listWidget->currentRow())->getFax());
          ui->textEdit_7->setText(liste.at(ui->listWidget->currentRow())->getEmail());
      
      }
      

      Das Sieht dann so aus:

      2_1514120692824_Screenshot 2017-12-24 14.04.34.png 1_1514120692823_Screenshot 2017-12-24 14.04.32.png 0_1514120692823_Screenshot 2017-12-24 14.04.30.png
      Wie ihr nun sehen könnt sind meine Listen nicht synchron von der Reihenfolge her, das liegt auch daran das ich das listwidget.sortigEnabled auf true hab.
      Lass ich das Sortieren raus dann funktioniert das mit der Reihenfolge da die Position in meiner Liste mit der Position des Listwidget ist.

      Habt ihr eine Idee wie ich die beiden Listen synchron halten kann.
      Oder gibt es eine Möglichkeit nur mit einer Liste zu arbeiten?

      Ich hoffe ich konnte mein Problem verständlich erklären.

      Falls ihr noch Rückfragen habt oder noch mehr Code braucht, dann stehe ich euch jederzeit zur Verfügung und Danke euch schon mal im Voraus.

      Liebe Grüße und Frohe Weihnachten

      aha_1980A Offline
      aha_1980A Offline
      aha_1980
      Lifetime Qt Champion
      wrote on last edited by aha_1980
      #2

      Hi @harupis,

      Oder gibt es eine Möglichkeit nur mit einer Liste zu arbeiten?

      Ja, die gibt es, nennt sich Model-View und ist genau das was Du hier brauchst. Im Prinzip ist das ganze eine Sicht (ein Formular oder Dialog) auf eine Datenbasis (Datenbank, Textdatei, oder auch dynamische Prozessdaten).

      Eine Einführung dazu gibt es hier: http://doc.qt.io/qt-5/modelview.html

      Du würdest dann Dein ListWidget durch eine ListView ersetzen und müsstest ein wenig Code schreiben, um die ListView mit den gewünschten Daten zu füllen.

      Sieht am Anfang kompliziert aus, ist aber machbar. Es gibt einige Beispiele dazu im Netz.

      Der Vorteil ist, dass später der Dialog der die Daten anzeigt einfach durch andere Elemente ersetzt werden kann, während die Daten die gleichen bleiben.

      Frohe Weihnachten, und viel Erfolg.

      Qt has to stay free or it will die.

      1 Reply Last reply
      0
      • D Offline
        D Offline
        deleted516
        wrote on last edited by
        #3

        Danke für die schnelle Rückmeldung habe es mir mal angschaut, aber mir wird hier nicht viel klar wie ich was machen soll.
        Natürlich interessiert mich das ModellView und werde das auch bischen nachverfolgen.
        Nur ich würd gerne eine lösung in dem ich nicht mein ganzes Programm neu schreiben muss.
        Gibt es vlt die Möglichkeit in Items ein Objekt zu hinterelegen? Wenn ja wie geht das genau?

        aha_1980A 1 Reply Last reply
        0
        • D deleted516

          Danke für die schnelle Rückmeldung habe es mir mal angschaut, aber mir wird hier nicht viel klar wie ich was machen soll.
          Natürlich interessiert mich das ModellView und werde das auch bischen nachverfolgen.
          Nur ich würd gerne eine lösung in dem ich nicht mein ganzes Programm neu schreiben muss.
          Gibt es vlt die Möglichkeit in Items ein Objekt zu hinterelegen? Wenn ja wie geht das genau?

          aha_1980A Offline
          aha_1980A Offline
          aha_1980
          Lifetime Qt Champion
          wrote on last edited by
          #4

          @harupis

          Na ja, das QListWidget ist intern auch ein QListView, nur das dort das Modell vordefiniert ist.

          Man kann das natürlich auch so verwenden, dass man jedem in der Liste sichtbaren Item noch extra Daten mit anhängt, siehe http://doc.qt.io/qt-5/qlistwidgetitem.html#data

          Das ist dann aber schon ziemlich wild zusammengehackt und vielleicht nicht der akademische Weg (könnte ja auf die Note Einfluss haben).

          Aber dazu müsstest Du uns vielleicht auch verraten, was das Lernziel bei dieser Projektarbeit sein soll. Ist es verbessern der C++-Fähigkeiten, Kennenlernen von Qt, oder vielleicht doch strukturiertes aufbewahren von Daten? Oder alles zusammen?

          Qt has to stay free or it will die.

          1 Reply Last reply
          0
          • D Offline
            D Offline
            deleted516
            wrote on last edited by
            #5

            Ich studiere Mechatronik, das ist nicht eines meiner Hautpfächer, ich soll nur ein wenig das QT Framework kennenlernen.

            Bezüglich der SetData, diese Funktion hatte ich auch gesehen nur ich verstehe ihre Implementierung nicht.
            Ich wäre für jeden Rat dankbar.
            Gerade halte ich meine meine zwei listen mittels einer For schleife die die Namen vergleicht und somit die richtigen Daten ausspuckt.
            Aber das finde ich als noch ein größeren murks.

            Kannst du mir vllt ein Beispiel geben wie du es machen würdest?

            Liebe Grüße

            aha_1980A 1 Reply Last reply
            0
            • D deleted516

              Ich studiere Mechatronik, das ist nicht eines meiner Hautpfächer, ich soll nur ein wenig das QT Framework kennenlernen.

              Bezüglich der SetData, diese Funktion hatte ich auch gesehen nur ich verstehe ihre Implementierung nicht.
              Ich wäre für jeden Rat dankbar.
              Gerade halte ich meine meine zwei listen mittels einer For schleife die die Namen vergleicht und somit die richtigen Daten ausspuckt.
              Aber das finde ich als noch ein größeren murks.

              Kannst du mir vllt ein Beispiel geben wie du es machen würdest?

              Liebe Grüße

              aha_1980A Offline
              aha_1980A Offline
              aha_1980
              Lifetime Qt Champion
              wrote on last edited by
              #6

              @harupis said in QList / Qlistwidget synchron halten:

              Kannst du mir vllt ein Beispiel geben wie du es machen würdest?

              Nein, aber Google bedienen. Eines der ersten Ergebnisse ist: https://stackoverflow.com/questions/7136818/can-i-store-some-user-data-in-every-item-of-a-qlistwidget

              Dort wird im Beispiel ein weiterer QString mit in der Liste abgelegt. Anstelle eines QString kann aber auch jedes andere Objekt (und damit auch eine Struktur mehrerer Objekte) abgelegt werden. Mehr sage ich dazu aber jetzt nicht, sonst ist die Hausaufgabe schon fertig gelöst.

              Hoffe trotzdem geholfen zu haben.

              Qt has to stay free or it will die.

              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