11

我有一个QListWidget日历。每个都QListWidgetItem在逻辑上与 的实例相关联,该实例Calendar是属于应用程序模型端的类。

我可以使用指针以指针的形式存储此关联QListWidgetItem::setData吗?当我尝试这样做时,我收到以下错误:

错误:'QVariant::QVariant(void*)' 是私有的

4

2 回答 2

28

void* 还有另一个构造函数:QVariant::QVariant(int typeOrUserType, const void * copy)您应该在其中传递一个唯一整数来表示指针类型。

但如文档所述,您可以声明指针类型Q_DECLARE_METATYPE(Calendar*)并使用QVariant::fromValue<Calendar*>(...)QVariant::value<Calendar*>()存储和检索值。

或者相反,因为您使用的是 aQListWidget而不是常规模型,所以您可以只对 进行子类化QListWidgetItem,并添加一个Calendar*具有所需访问器的成员变量,以避免使用的开销QVariant

于 2012-02-12T15:42:33.593 回答
0

我建议也看看这个解决方案,我认为它非常优雅:(有轻微的语法错误,但你会很快发现它们,否则编译器会发出错误)

https://web.archive.org/web/20171025163314/http://blog.bigpixel.ro/2010/04/storing-pointer-in-qvariant/

于 2012-10-10T14:04:38.050 回答