Storing pointers using QListWidgetItem::setData

I have a QListWidget of calendars. Each QListWidgetItem is logically associated with an instance of Calendar, which is a class that belongs to the Model side of the application.

Can I store this association in the form of a pointer using QListWidgetItem::setData? When I attempt to do this, I get the following error:

error: 'QVariant::QVariant(void*)' is private

Answers


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.


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)

http://blog.bigpixel.ro/2010/04/storing-pointer-in-qvariant/


Need Your Help

How to output some log to console when developing flex application?

flash apache-flex debugging logging

I'm new to flex, and trying to write some demo applications. Now I have a very newbie question: How to output some log to console(or somewhere else I can see) in a flex application?

NSDate - Convert Date to GMT

ios objective-c swift nsdate gmt

I need the ability to convert an NSDate value to a GMT Date.