Storing pointers using QListWidgetItem::setData

后端 未结 2 998
北荒
北荒 2021-01-02 03:03

I have a QListWidget of calendars. Each QListWidgetItem is logically associated with an instance of Calendar, which is a class that be

相关标签:
2条回答
  • 2021-01-02 03:44

    I would suggest looking at this solution as well, which I think is quite elegant: (there are minor syntax errors, but you will spot them quickly or the compiler will issue an error)

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

    0 讨论(0)
  • 2021-01-02 03:50

    There is another constructor for void*: QVariant::QVariant(int typeOrUserType, const void * copy) where you should pass an unique integer to represent the pointer type.

    But as stated by the documentation, you could declare your pointer type with Q_DECLARE_METATYPE(Calendar*) and use QVariant::fromValue<Calendar*>(...) and QVariant::value<Calendar*>() to store and retrieve the value.

    Or instead, because you are using a QListWidget instead of a regular model, you can just subclass QListWidgetItem, and add a Calendar* member variable with the required accessors, to avoid the overhead of using QVariant.

    0 讨论(0)
提交回复
热议问题