我有一个 QListWidget
的日历。每个QListWidgetItem
在逻辑上与 Calendar
的实例相关联,这是一个属于应用程序模型端的类。
我可以使用 QListWidgetItem::setData
以指针的形式存储这个关联吗? ?当我尝试这样做时,我收到以下错误:
error: 'QVariant::QVariant(void*)' is private
最佳答案
void* 还有另一个构造函数:QVariant::QVariant(int typeOrUserType, const void * copy)
你应该传递一个唯一的整数来表示指针类型。
但是如文档所述,您可以使用 Q_DECLARE_METATYPE(Calendar*)
声明您的指针类型。并使用 QVariant::fromValue<Calendar*>(...)
和 QVariant::value<Calendar*>()
存储和检索值。
或者相反,因为您使用的是 QListWidget
您可以将 QListWidgetItem
子类化而不是常规模型,并添加 Calendar*
具有所需访问器的成员变量,以避免使用 QVariant
的开销.
关于qt - 使用 QListWidgetItem::setData 存储指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9248001/