Qt - Wie Associate Daten mit QTableWidgetItem?
-
24-09-2019 - |
Frage
Ich mag mit jedem QTableWidgetItem zusätzlichen Daten assoziieren in die Tabelle eingefügt, um die Daten in Zukunft zu verwenden, wenn es auf einem Tisch Einzelteil geklickt wird. Aber diese Daten sollten nicht sichtbar sein. Wie kann ich das tun?
Lösung
Sie können mit QTableWidgetItem::setData()
etwa so:
setData(Qt::UserRole, myData); // set
Wo myData
ein getragener QVariant Typ. Sie können QTableWidgetItem::data()
verwenden Sie den Wert abzurufen, die Sie speichern.
Wenn Sie mehr benötigen, als man Sie Qt::UserRole
+ 1, + 2, und so weiter verwenden (Qt::UserRole
ist „Die erste Rolle, die für anwendungsspezifische Zwecke verwendet werden kann.“, Können Sie mehr über die anderen Arten gelesen von Rollen hier ).
Wenn Sie einen benutzerdefinierten Typen sind zu speichern, die nicht nativ von QVariant unterstützen Sie benötigen, um Ihre Art mit dem Qt Meta-Objekt-System zu registrieren. Schauen Sie sich QMetaType für weitere Details über das.
Wenn Sie wollen eine ganze Zahl speichern, zum Beispiel:
QTableWidgetItem* widgetItem = tableWidget->item(row, col); // get the item at row, col
int myInteger = 42;
widgetItem->setData(Qt::UserRole, myInteger);
// ...
myInteger = widgetItem->data(Qt::UserRole);
Andere Tipps
Sie können von QTableItem ableiten und geben Sie Ihre eigenen Daten Mitglied, oder Sie können die QTableView mit Ihrem eigenen Modell verwenden.