Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. "int" Daten aus der Containerklasse QSet in ein ListWidget ausgeben
Qt 6.11 is out! See what's new in the release blog

"int" Daten aus der Containerklasse QSet in ein ListWidget ausgeben

Scheduled Pinned Locked Moved Solved German
15 Posts 3 Posters 8.0k Views 3 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.
  • S Offline
    S Offline
    steevie
    wrote on last edited by
    #1

    Hallo,
    längere Zeit kam ich alleine klar, aber jetzt stehe ich irgendwie auf dem Schlauch.
    Ich habe ganze Zahlen über ein lineEdit Widget in die Containerklasse Vector eingetragen, es dann der Reihe nach sortiert und um die doppelten Einträge herauszuholen in die Containerklasse QSet übertragen.
    Das klappt alles.
    Aber wenn ich die Daten wieder in ein Ausgabefenster bringen möchte, ernte ich nur rote Flaggen, egal wie ich es versuche.
    Als Meldung kommt sehr oft:

    \QTProjekte\Sortierliste\mainwindow.cpp:129: Fehler:cannot convert 'QList<int>' to 'QList<int>*' in assignment

    Was genau ist damit gemeint, und wie kann ich die Liste ausgeben?
    Wäre für Hilfe sehr dankbar

    Steevie

    K 1 Reply Last reply
    0
    • S steevie

      HAllo,

      ja jetzt kann ich Daten in das ListWidget ausgeben. Das hat mir sehr geholfen.
      Habe aber einen Denkfehler in meinem Programm.
      Zuerst habe ich in einem Vektor die Daten aufsteigend sortiert und dann an QSet übergeben, um die doppelten Einträge herauszufiltern.

      Anscheind schmeisst QSet die Daten durcheinander, denn die Reihenfolge ist jetzt scheinbar willkürlich.
      Aber ich denke, das bekomme ich jetzt hin.

      Danke nochmal.

      Steevie

      S Offline
      S Offline
      steevie
      wrote on last edited by
      #10

      @steevie said in "int" Daten aus der Containerklasse QSet in ein ListWidget ausgeben:

      HAllo,

      ja jetzt kann ich Daten in das ListWidget ausgeben. Das hat mir sehr geholfen.
      Habe aber einen Denkfehler in meinem Programm.
      Zuerst habe ich in einem Vektor die Daten aufsteigend sortiert und dann an QSet übergeben, um die doppelten Einträge herauszufiltern.

      Anscheind schmeisst QSet die Daten durcheinander, denn die Reihenfolge ist jetzt scheinbar willkürlich.
      Aber ich denke, das bekomme ich jetzt hin.

      Danke nochmal.

      Steevie

      K 1 Reply Last reply
      0
      • S steevie

        Hallo,
        längere Zeit kam ich alleine klar, aber jetzt stehe ich irgendwie auf dem Schlauch.
        Ich habe ganze Zahlen über ein lineEdit Widget in die Containerklasse Vector eingetragen, es dann der Reihe nach sortiert und um die doppelten Einträge herauszuholen in die Containerklasse QSet übertragen.
        Das klappt alles.
        Aber wenn ich die Daten wieder in ein Ausgabefenster bringen möchte, ernte ich nur rote Flaggen, egal wie ich es versuche.
        Als Meldung kommt sehr oft:

        \QTProjekte\Sortierliste\mainwindow.cpp:129: Fehler:cannot convert 'QList<int>' to 'QList<int>*' in assignment

        Was genau ist damit gemeint, und wie kann ich die Liste ausgeben?
        Wäre für Hilfe sehr dankbar

        Steevie

        K Offline
        K Offline
        koahnig
        wrote on last edited by
        #2

        @steevie

        Hallo,

        du hast eine Mischung aus QList<int> und einem Pointer QList<int>* (markiert durch den kleinen Stern.

        und hier die verschiedenen Zuweisungen:

        int i;
        int *ptr_i = &i;  // ampersand gibt dir einen Pointer
        
        QList<int> intListe;
        QList<int> *ptr_intListe = &intListe;
        
        intListe = *ptr_intListe;
        i = *ptr_i;
        

        Vote the answer(s) that helped you to solve your issue(s)

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

          Hi!
          Nur mal so als kleine Anregung:

              std::vector<int> v = {5, 0, 2, 3, 7, 5, 9, 1, 0, 1, 2, 7};
          
              std::sort(v.begin(), v.end());
              v.erase( std::unique(v.begin(), v.end()), v.end() );
          
              QStringList lst;
              lst.reserve(v.size());
              for (auto const &i: v)
                  lst.push_back(QString::number(i));
          
              ui->listWidget->clear();
              ui->listWidget->addItems(lst);
          
          1 Reply Last reply
          0
          • S Offline
            S Offline
            steevie
            wrote on last edited by koahnig
            #4

            Hallo,
            danke aber das hat noc h nicht geholfen.
            Ich habe einen Container QSet mit dem Namen "ohneDoppelt".
            Den kann ich mir über qDebug() anzeigen lassen:

            for (int i = 0; i < vektorGroesse; i++)
                {
                ohneDoppelt->insert(vektorListe->at(i));
                qDebug() << "QSetliste Eingabe" << vektorListe->at(i);
                }
                int laengeQSet = ohneDoppelt->count();
            
                qDebug() << "Ausgabe der Liste ohne Doppelt " << ohneDoppelt->values();
            

            Aber wenn ich diese Liste in meine Ausgabe-QListWidget eintragen will, funktioniert das nicht.
            Mein Versuch sieht momentan so aus:

            ui->listWidgetAusgabe->addItems(ohneDoppelt);
            

            das ist jetzt die einfache Version.
            Habe es schon mit for-Schleife versucht und auch mit QString::number und etliche andere Konstellationen.
            Habe auch schon versucht eine QString-Liste dazwischen zu schalten, aber auch in die Liste konnte ich nichts eintragen. immer der selbe Fehler:

            cpp:129: Fehler:cannot convert 'QList<int>' to 'QList<int>*' in assignment

            Gibt es noch Vorschläge?

            Danke für Eure Mühe

            Steevie

            [edit:koahnig, code tags added]

            K 1 Reply Last reply
            0
            • S steevie

              Hallo,
              danke aber das hat noc h nicht geholfen.
              Ich habe einen Container QSet mit dem Namen "ohneDoppelt".
              Den kann ich mir über qDebug() anzeigen lassen:

              for (int i = 0; i < vektorGroesse; i++)
                  {
                  ohneDoppelt->insert(vektorListe->at(i));
                  qDebug() << "QSetliste Eingabe" << vektorListe->at(i);
                  }
                  int laengeQSet = ohneDoppelt->count();
              
                  qDebug() << "Ausgabe der Liste ohne Doppelt " << ohneDoppelt->values();
              

              Aber wenn ich diese Liste in meine Ausgabe-QListWidget eintragen will, funktioniert das nicht.
              Mein Versuch sieht momentan so aus:

              ui->listWidgetAusgabe->addItems(ohneDoppelt);
              

              das ist jetzt die einfache Version.
              Habe es schon mit for-Schleife versucht und auch mit QString::number und etliche andere Konstellationen.
              Habe auch schon versucht eine QString-Liste dazwischen zu schalten, aber auch in die Liste konnte ich nichts eintragen. immer der selbe Fehler:

              cpp:129: Fehler:cannot convert 'QList<int>' to 'QList<int>*' in assignment

              Gibt es noch Vorschläge?

              Danke für Eure Mühe

              Steevie

              [edit:koahnig, code tags added]

              K Offline
              K Offline
              koahnig
              wrote on last edited by
              #5

              @steevie

              Dein Post lässt einige Frage offen.

              @steevie said in "int" Daten aus der Containerklasse QSet in ein ListWidget ausgeben:

              ui->listWidgetAusgabe->addItems(ohneDoppelt);
              

              Wenn listWidgetAusgabe ein QListWidget ist, dann musst du in addItems eine QStringList verwenden. QStringList ist defacto QList<QString> und nicht QList<int> und auch nicht QList<int>* . Damit passt die Fehlermeldung unten eigentlich nicht zu deinen Angaben.

              @steevie said in "int" Daten aus der Containerklasse QSet in ein ListWidget ausgeben:

              cpp:129: Fehler:cannot convert 'QList<int>' to 'QList<int>*' in assignment

              Falls ohneDoppelt eine QList<int> ist, dann kannst du zum Beispiel so diese in eine QStringList umwandeln.

              QStringList strList;
              for ( QList<int>::const_iterator it = ohneDoppelt.begin(); it != ohneDoppelt.end(); ++it )
              {
                     strList << QString().setNum ( *it );
              }
              ui->listWidgetAusgabe->addItems(strList);
              
              

              Note: Quellcode ist nicht getestet.

              Vote the answer(s) that helped you to solve your issue(s)

              1 Reply Last reply
              0
              • S Offline
                S Offline
                steevie
                wrote on last edited by
                #6

                HAllo,
                "ohneDoppelt" ist ein Container von "QSet" aus der STL der mit "int-Werten" gefüllt ist.
                Diesen Container habe ich genommen um alle doppelten Einträge herauszufiltern.
                Ich kann mir auch die "int"-Werte über qDebug() beim Ausführen des Programms anzeigen lassen.
                Bisher ist es mir jedoch nicht gelungen die "int-Werte" aus dem Container QSet in QString umzuwandeln, damit diese Werte im QListWidget ausgegeben werden können.

                Steevie

                K 1 Reply Last reply
                0
                • S steevie

                  HAllo,
                  "ohneDoppelt" ist ein Container von "QSet" aus der STL der mit "int-Werten" gefüllt ist.
                  Diesen Container habe ich genommen um alle doppelten Einträge herauszufiltern.
                  Ich kann mir auch die "int"-Werte über qDebug() beim Ausführen des Programms anzeigen lassen.
                  Bisher ist es mir jedoch nicht gelungen die "int-Werte" aus dem Container QSet in QString umzuwandeln, damit diese Werte im QListWidget ausgegeben werden können.

                  Steevie

                  K Offline
                  K Offline
                  koahnig
                  wrote on last edited by
                  #7

                  @steevie

                  Versuche einfach QList in dem Beispiel durch QSet zu ersetzen. Sollte eigentlich auch funktionieren.

                  QSet ist aber nicht STL! Hast du eine Konvertierung gemacht?

                  Vote the answer(s) that helped you to solve your issue(s)

                  1 Reply Last reply
                  0
                  • S Offline
                    S Offline
                    steevie
                    wrote on last edited by
                    #8

                    Bisher hat es trotzdem noch nicht geklappt, aber ich versuch es morgen weiter.

                    In meinem Lehrbuch steht, dass die Container- Klasse"QSet" Teil der "Standard-Template-Library" (also STL) ist.
                    So wie "Vector" oder "Queue".
                    Oder ist das nicht richtig?

                    Danke für die Hilfe

                    Steevie

                    1 Reply Last reply
                    0
                    • S Offline
                      S Offline
                      steevie
                      wrote on last edited by
                      #9

                      HAllo,

                      ja jetzt kann ich Daten in das ListWidget ausgeben. Das hat mir sehr geholfen.
                      Habe aber einen Denkfehler in meinem Programm.
                      Zuerst habe ich in einem Vektor die Daten aufsteigend sortiert und dann an QSet übergeben, um die doppelten Einträge herauszufiltern.

                      Anscheind schmeisst QSet die Daten durcheinander, denn die Reihenfolge ist jetzt scheinbar willkürlich.
                      Aber ich denke, das bekomme ich jetzt hin.

                      Danke nochmal.

                      Steevie

                      S 1 Reply Last reply
                      0
                      • S steevie

                        HAllo,

                        ja jetzt kann ich Daten in das ListWidget ausgeben. Das hat mir sehr geholfen.
                        Habe aber einen Denkfehler in meinem Programm.
                        Zuerst habe ich in einem Vektor die Daten aufsteigend sortiert und dann an QSet übergeben, um die doppelten Einträge herauszufiltern.

                        Anscheind schmeisst QSet die Daten durcheinander, denn die Reihenfolge ist jetzt scheinbar willkürlich.
                        Aber ich denke, das bekomme ich jetzt hin.

                        Danke nochmal.

                        Steevie

                        S Offline
                        S Offline
                        steevie
                        wrote on last edited by
                        #10

                        @steevie said in "int" Daten aus der Containerklasse QSet in ein ListWidget ausgeben:

                        HAllo,

                        ja jetzt kann ich Daten in das ListWidget ausgeben. Das hat mir sehr geholfen.
                        Habe aber einen Denkfehler in meinem Programm.
                        Zuerst habe ich in einem Vektor die Daten aufsteigend sortiert und dann an QSet übergeben, um die doppelten Einträge herauszufiltern.

                        Anscheind schmeisst QSet die Daten durcheinander, denn die Reihenfolge ist jetzt scheinbar willkürlich.
                        Aber ich denke, das bekomme ich jetzt hin.

                        Danke nochmal.

                        Steevie

                        K 1 Reply Last reply
                        0
                        • S steevie

                          @steevie said in "int" Daten aus der Containerklasse QSet in ein ListWidget ausgeben:

                          HAllo,

                          ja jetzt kann ich Daten in das ListWidget ausgeben. Das hat mir sehr geholfen.
                          Habe aber einen Denkfehler in meinem Programm.
                          Zuerst habe ich in einem Vektor die Daten aufsteigend sortiert und dann an QSet übergeben, um die doppelten Einträge herauszufiltern.

                          Anscheind schmeisst QSet die Daten durcheinander, denn die Reihenfolge ist jetzt scheinbar willkürlich.
                          Aber ich denke, das bekomme ich jetzt hin.

                          Danke nochmal.

                          Steevie

                          K Offline
                          K Offline
                          koahnig
                          wrote on last edited by
                          #11

                          @steevie

                          Du brauchst den Vector zum Sortieren gar nicht.
                          QStringList::sort erlaubt dir das Sortieren. QStringList::removeDuplicates erlaubt dir die doppelten Werte zu entfernen. Ich denke damit kannst du dir einige Verrenkungen sparen.

                          QSet legt tatsächlich nicht auf die Reihenfolge Wert.
                          QSet<T> is one of Qt's generic container classes. It stores values in an unspecified order and provides very fast lookup of the values. Internally, QSet<T> is implemented as a QHash.

                          Ich verwende QSet nicht und war einfach von der stl Funktionalität ausgegangen.

                          Vote the answer(s) that helped you to solve your issue(s)

                          1 Reply Last reply
                          0
                          • S Offline
                            S Offline
                            steevie
                            wrote on last edited by
                            #12

                            Danke für die Tips,

                            aber bei uns haben wir gerade die Containerklassen behandelt, dehalb wollte ich es damit auch programmieren.
                            Jetzt jhabe ich es geschafft und das Programm ist fertig.
                            Wenn ich so etwas noch mal mache, werde ich es wahrscheinlich über QStrinList:: machen :-)
                            Danke nochmal.

                            Steevie

                            S 1 Reply Last reply
                            0
                            • S steevie

                              Danke für die Tips,

                              aber bei uns haben wir gerade die Containerklassen behandelt, dehalb wollte ich es damit auch programmieren.
                              Jetzt jhabe ich es geschafft und das Programm ist fertig.
                              Wenn ich so etwas noch mal mache, werde ich es wahrscheinlich über QStrinList:: machen :-)
                              Danke nochmal.

                              Steevie

                              S Offline
                              S Offline
                              steevie
                              wrote on last edited by
                              #13

                              @steevie said in "int" Daten aus der Containerklasse QSet in ein ListWidget ausgeben:

                              Danke für die Tips,

                              aber bei uns haben wir gerade die Containerklassen behandelt, dehalb wollte ich es damit auch programmieren.
                              Jetzt habe ich es geschafft und das Programm ist fertig.
                              Wenn ich so etwas noch mal mache, werde ich es wahrscheinlich über QStrinList:: machen :-)
                              Danke nochmal.

                              Steevie

                              S 1 Reply Last reply
                              0
                              • S steevie

                                @steevie said in "int" Daten aus der Containerklasse QSet in ein ListWidget ausgeben:

                                Danke für die Tips,

                                aber bei uns haben wir gerade die Containerklassen behandelt, dehalb wollte ich es damit auch programmieren.
                                Jetzt habe ich es geschafft und das Programm ist fertig.
                                Wenn ich so etwas noch mal mache, werde ich es wahrscheinlich über QStrinList:: machen :-)
                                Danke nochmal.

                                Steevie

                                S Offline
                                S Offline
                                steevie
                                wrote on last edited by
                                #14

                                @steevie said in "int" Daten aus der Containerklasse QSet in ein ListWidget ausgeben:

                                @steevie said in "int" Daten aus der Containerklasse QSet in ein ListWidget ausgeben:

                                Danke für die Tips,

                                aber bei uns haben wir gerade die Containerklassen behandelt, dehalb wollte ich es damit auch programmieren.
                                Jetzt habe ich es geschafft und das Programm ist fertig.
                                Wenn ich so etwas noch mal mache, werde ich es wahrscheinlich über QStringList:: machen :-)
                                Danke nochmal.

                                Steevie

                                ? 1 Reply Last reply
                                0
                                • S steevie

                                  @steevie said in "int" Daten aus der Containerklasse QSet in ein ListWidget ausgeben:

                                  @steevie said in "int" Daten aus der Containerklasse QSet in ein ListWidget ausgeben:

                                  Danke für die Tips,

                                  aber bei uns haben wir gerade die Containerklassen behandelt, dehalb wollte ich es damit auch programmieren.
                                  Jetzt habe ich es geschafft und das Programm ist fertig.
                                  Wenn ich so etwas noch mal mache, werde ich es wahrscheinlich über QStringList:: machen :-)
                                  Danke nochmal.

                                  Steevie

                                  ? Offline
                                  ? Offline
                                  A Former User
                                  wrote on last edited by
                                  #15

                                  @steevie Warum zitierst du dich ständig selbst? ^_^

                                  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