我有QListWidget
个日历。每个QListWidgetItem
在逻辑上与Calendar
的实例相关联,QListWidgetItem::setData
是属于应用程序模型端的类。
我可以使用{{1}}以指针的形式存储此关联吗?当我尝试这样做时,我收到以下错误:
错误:'QVariant :: QVariant(void *)'是私有的
答案 0 :(得分:26)
void *:QVariant::QVariant(int typeOrUserType, const void * copy)
还有另一个构造函数,你应该传递一个唯一的整数来表示指针类型。
但正如文档中所述,您可以使用Q_DECLARE_METATYPE(Calendar*)
声明指针类型,并使用QVariant::fromValue<Calendar*>(...)
和QVariant::value<Calendar*>()
来存储和检索值。
或者,因为您使用的是QListWidget
而不是常规模型,您可以将QListWidgetItem
子类化,并添加具有所需访问者的Calendar*
成员变量,以避免使用QVariant
的开销。
答案 1 :(得分:0)
我建议也要考虑这个解决方案,我觉得这个解决方案非常优雅: (有一些小的语法错误,但你会很快发现它们,否则编译器会发出错误)
http://blog.bigpixel.ro/2010/04/storing-pointer-in-qvariant/