Я хочу связать дополнительные данные с каждым QTableWidgetItem, вставленным в таблицу, чтобы использовать эти данные в будущем при нажатии на элемент таблицы. Но эти данные не должны быть видны. Как я могу это сделать?
Qt - Как связать данные с QTableWidgetItem?
Ответы (2)
Вы можете использовать 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 со своей собственной моделью.