我有一个QListWidget
日历。每个都QListWidgetItem
在逻辑上与 的实例相关联,该实例Calendar
是属于应用程序模型端的类。
我可以使用指针以指针的形式存储此关联QListWidgetItem::setData
吗?当我尝试这样做时,我收到以下错误:
错误:'QVariant::QVariant(void*)' 是私有的
我有一个QListWidget
日历。每个都QListWidgetItem
在逻辑上与 的实例相关联,该实例Calendar
是属于应用程序模型端的类。
我可以使用指针以指针的形式存储此关联QListWidgetItem::setData
吗?当我尝试这样做时,我收到以下错误:
错误:'QVariant::QVariant(void*)' 是私有的
void* 还有另一个构造函数:QVariant::QVariant(int typeOrUserType, const void * copy)
您应该在其中传递一个唯一整数来表示指针类型。
但如文档所述,您可以声明指针类型Q_DECLARE_METATYPE(Calendar*)
并使用QVariant::fromValue<Calendar*>(...)
和QVariant::value<Calendar*>()
存储和检索值。
或者相反,因为您使用的是 aQListWidget
而不是常规模型,所以您可以只对 进行子类化QListWidgetItem
,并添加一个Calendar*
具有所需访问器的成员变量,以避免使用的开销QVariant
。
我建议也看看这个解决方案,我认为它非常优雅:(有轻微的语法错误,但你会很快发现它们,否则编译器会发出错误)