我有一个日历的QListWidget。每个QListWidgetItem在逻辑上都与Calendar的一个实例相关联,该实例属于应用程序的模型端。
我可以使用QListWidgetItem::setData以指针的形式存储这个关联吗?当我尝试这样做时,我会得到以下错误:
错误:“QVariant::QVariant(void*)”是私有
发布于 2012-02-12 15:42:33
还有一个用于void*:QVariant::QVariant(int typeOrUserType, const void * copy)的构造函数,您应该传递一个唯一的整数来表示指针类型。
但是,正如文档所述,您可以使用Q_DECLARE_METATYPE(Calendar*)声明指针类型,并使用QVariant::fromValue<Calendar*>(...)和QVariant::value<Calendar*>()存储和检索该值。
或者,因为您使用的是QListWidget而不是常规模型,所以您只需子类QListWidgetItem,并添加一个带有所需访问器的Calendar*成员变量,以避免使用QVariant的开销。
发布于 2012-10-10 14:04:38
我建议也考虑一下这个解决方案,我认为这是非常优雅的:(语法错误很小,但是您会很快发现它们,或者编译器会发出错误)。
https://stackoverflow.com/questions/9248001
复制相似问题