QTreeWidgetItem als Pair



  • Hallo,

    gibt es einen Möglichkeit ein QTreeWidgetItem als Pair zu definieren?

    Ich bräuchte es um eine zahl (int) und einen String als QTreeWidgetItem anzeigen zu lassen.

    Am Ende soll das Ergebnis so aussehen:

    [ZAHL] X - NAME

    Wenn ich doppelt in meinem linken QTreeWidget auf ein Item klicke soll geprüft werden ob es das "X - NAME" schon gibt, falls ja soll nur die ZAHL erhöht werden.

    Das Linke sieht ungefähr so aus:

    EDITION
    |
     --------TYP1
              |
               ------ X - NAME
               ------ X - NAME
               ------ X - NAME
     --------TYP2
              |
               ------ X - NAME
               ------ X - NAME
               ------ X - NAME
     --------TYP3
              |
               ------ X - NAME
               ------ X - NAME
               ------ X - NAME
    

    Rechts soll das dann so aussehen:

    TYP1
    |
     ------ [ANZAHL] X - NAME
     ------ [ANZAHL] X - NAME
     ------ [ANZAHL] X - NAME
    
    TYP2
    |
     ------ [ANZAHL] X - NAME
     ------ [ANZAHL] X - NAME
     ------ [ANZAHL] X - NAME
    
    TYP3
    |
     ------ [ANZAHL] X - NAME
     ------ [ANZAHL] X - NAME
     ------ [ANZAHL] X - NAME
    

    Je nach TYP im linken Widget soll es sich auch im rechten unter dem entsprechenden TYP auch im rechten hinzufügen.

    Wenn nicht soll die ZAHL 1 sein und sich neu hinzufügen.

    Wie lässt sich das ganze bewerkstelligen?

    Gruß,
    Pharao_Atem



  • Du hast zwei TreeViews, die (fast) das gleiche Anzeigen?
    Allgemeines zum Model mit TreeView: http://doc.qt.io/qt-5/qtwidgets-itemviews-simpletreemodel-example.html

    Erstelle ein Model und weise das beiden TreeViews zu, in ::data muss du dann je nach Treeview anders rückgeben. Oder zwei Model (eins je Treeview) die wiederum auf das gleiche Datenmodel zurückgreifen (siehe Beispiel oben).



  • Habe nun das Beispiel einfach mal in mein Projekt so wie es ist übernommen.

    Nun wird meine linke list view mit den daten wie im beispiel leider nicht gefüllt, es bleibt einfach leer.

    Ich möchte darin nur 1 column die gefüllt wird.

    QFile file(":/dateien/default.txt");
        file.open(QIODevice::ReadOnly);
        cardViewModel model(file.readAll());
        file.close();
        ui->cardView->setModel(&model);
    

    alles ist aus dem beispiel gleich, ich habe nur die Namen geändert.

    TreeItem -> cardViewItem
    TreeModel -> cardViewModel


Anmelden zum Antworten