Qt - Как связать данные с qtablewidgetiTem?
-
24-09-2019 - |
Вопрос
Я хочу связать дополнительные данные с каждым QTableWidGetItem, вставленным в таблицу, чтобы использовать эти данные в будущем, когда он нажимается на таблице. Но эти данные не должны быть видны. Как я могу это сделать?
Решение
Вы можете использовать QTableWidgetItem::setData()
вот так:
setData(Qt::UserRole, myData); // set
Где myData
Поддерживается Qvaniant. тип. Вы можете использовать QTableWidgetItem::data()
Чтобы получить значение, которое вы храните.
Если вам нужно больше, чем можно использовать Qt::UserRole
+ 1, + 2 и так далее (Qt::UserRole
Является «первой ролью, которая может использоваться для конкретных применений». «Вы можете прочитать больше о других типах ролей здесь).
Если вы храните пользовательский тип, который не поддерживается QVariant, вам нужно будет зарегистрировать ваш тип с системой Meta-Object 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 со своей собственной моделью.