Qt - 如何将数据与QTableWidgetItem关联?
我想将附加数据与插入到表中的每个QTableWidgetItem关联起来,以便将来使用这些数据,当它在表项上单击时。但是这些数据不应该是可见的。我怎样才能做到这一点?Qt - 如何将数据与QTableWidgetItem关联?
您可以使用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);
你可以从你的QTableItem派生,并提供自己的数据成员,或者您可以使用QTableView中与自己的模型。
从我的经验来看,这比setData数据Qt函数更灵活 – drahnr 2010-04-06 06:14:24
是的,但是对于初学者来说,richard的答案可能更容易 - 或者如果您只是试图翻译一些MFC代码 – 2010-04-06 14:55:54
这是我对Qt最大的抱怨之一。在我使用它的几个月里,我还没有找到一种类似于.NET中数据绑定的简单机制。 – 2010-04-05 16:53:10
所有Qt的项目显示类(树,表,列表)都基于模型/视图,很容易让后端模型成为您喜欢的任何东西。 LINQ没有单击链接到SQL,但它更灵活。 – 2010-04-06 14:44:32
@Martin我把它称为“可行”,而不是“容易”......尽管我认为这比直接与演示文稿相关的数据要好。 – 2010-04-08 20:07:24