Was ist eine Rolle in einem QTreeWidgetItem?
-
21-08-2019 - |
Frage
Ich habe eine QTreeWidget
mit mehreren Spalten, füge ich QTreeWidgetItems
zu. Ich versuche, die zweite Spalte, um einen numerischen Wert für jede Item
enthalten, damit ich die Einzelteile durch diesen Wert sortieren
QTreeWidgetItem has a method called setData(int column, int role, QVariant(data))
Ich kann keine Dokumentation finden, was dieses role
Argument. Alles, was ich weiß, ist, dass, wenn ich es auf 1 oder 2 gesetzt, was in der Spalte auftaucht, wenn ich es auf 0 oder> = 3 gesetzt, unabhängig in der Spalte, nichts auftaucht, immer die Zahlen in alphabetischer Reihenfolge am Ende sortiert werden, das ist falsch.
Lösung
Sie können die Qt :: Userrole für bestimmte Zwecke Anwendung verwenden. Da diese Daten ein QVariant ist, können Sie eine QList erstellen, um mehrere Daten und danach muss er in QVariant und stellen Sie die Daten gesetzt.
Hier ist ein Beispiel:
QTreeWidgetItem* item = new QTreeWidgetItem();
QList<QVariant> dataList;
dataList.append("data 1");
dataList.append("data 2");
QVariant data(dataList);
item->setData(0, Qt::UserRole, data);
Andere Tipps
Die entsprechende Dokumentation finden Sie unter Qt :: ItemDataRole finden (gefunden durch QAbstractItemModel :: setData ) . Rollen werden verwendet, um festzulegen, was die Daten, die Sie vorbei sollten verwendet werden. Sie können verschiedene Rollen verwenden den Tooltip, Schriftart oder Farbe eines Elements zu setzen, unter anderem.
, dass item->text()
Hinweis ist eine Bequemlichkeit entspricht item->data(Qt::DisplayRole).toString()