Qt - 如何将数据与QTableWidgetItem相关联?

时间:2010-04-05 16:42:24

标签: qt qt4 qtablewidget qtablewidgetitem

我想将附加数据与插入表中的每个QTableWidgetItem相关联,以便将来在表项上单击时使用该数据。但是这些数据不应该是可见的。我怎么能这样做?

2 个答案:

答案 0 :(得分:21)

你可以这样使用QTableWidgetItem::setData()

setData(Qt::UserRole, myData); // set

其中myData是受支持的QVariant类型。您可以使用QTableWidgetItem::data()来检索存储的值。

如果您需要多个Qt::UserRole + 1,+ 2,依此类推(Qt::UserRole是“可用于特定应用目的的第一个角色。”,您可以阅读有关其他类型角色here)的更多信息。

如果您要存储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);

答案 1 :(得分:5)

您可以从QTableItem派生并提供您自己的数据成员,或者您可以将QTableView与您自己的模型一起使用。