Я хочу связать дополнительные данные с каждым QTableWidgetItem, введенным в таблицу для использования тех данных в будущем, когда это нажимается на объекте таблицы. Но те данные не должны быть видимы. Как я могу сделать это?
Вы можете использовать QTableWidgetItem :: setData ()
следующим образом:
setData(Qt::UserRole, myData); // set
Где myData
- поддерживаемый QVariant тип. Вы можете использовать QTableWidgetItem :: data ()
для получения значения, которое вы храните.
Если вам нужно больше одного, вы можете использовать Qt :: UserRole
+ 1, + 2 и так далее ( Qt :: UserRole
: «Первая роль, которая может быть используется для конкретных целей приложения. ", вы можете узнать больше о других типах ролей здесь ).
Если вы храните пользовательский тип, который изначально не поддерживается QVariant, вам необходимо зарегистрировать свой тип в системе метаобъектов Qt. См. QMetaType для получения более подробной информации.
Если вы хотите сохранить целое число, например:
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);
Вы можете унаследовать от QTableItem и предоставить свой собственный член данных, или вы можете использовать QTableView со своей собственной моделью.