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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top