Вопрос

Я хочу связать дополнительные данные с каждым 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 со своей собственной моделью.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top