我想将附加数据与插入表中的每个QTableWidgetItem相关联,以便将来在表项上单击时使用该数据。但是这些数据不应该是可见的。我怎么能这样做?
答案 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与您自己的模型一起使用。