Qt - Как связать данные с QTableWidgetItem? - PullRequest
6 голосов
/ 05 апреля 2010

Я хочу связать дополнительные данные с каждым QTableWidgetItem, вставленным в таблицу, чтобы использовать эти данные в будущем при щелчке по элементу таблицы. Но эти данные не должны быть видны. Как я могу это сделать?

Ответы [ 2 ]

21 голосов
/ 05 апреля 2010

Вы можете использовать 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);
5 голосов
/ 05 апреля 2010

Вы можете получить из QTableItem и предоставить свой собственный элемент данных, или вы можете использовать QTableView со своей собственной моделью.

...