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

Nar*_*rek 7 qt qt4 qtablewidget qtablewidgetitem

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

ric*_*dwb 21

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

setData(Qt::UserRole, myData); // set
Run Code Online (Sandbox Code Playgroud)

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);
Run Code Online (Sandbox Code Playgroud)

  • 如果要为每个表项添加2个以上的数据元素,则可以更轻松地创建模型并使用QTableView代替IMO. (2认同)

Mar*_*ett 5

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