QVariant de QObject*

J'essaie de joindre un pointeur vers un QListWidgetItem, pour être utilisé dans la fente itemActivated.

Le pointeur j'essaie de joindre est un QObject* descendant, donc, mon code ressemble à ça:

Image * im = new Image();  
//here I add data to my Image object
//now I create my item
QListWidgetItem * lst1 = new QListWidgetItem(*icon, serie->getSeriesInstanceUID(),  m_iconView);
//then I set my instance to a QVariant
QVariant v(QMetaType::QObjectStar, &im)
//now I "attach" the variant to the item.
lst1->setData(Qt::UserRole, v);
//After this, I connect the SIGNAL and SLOT
...

Maintenant, mon problème, le itemActivated logement. Ici, j'ai besoin d'extraire mon Image* de la variante, et je ne sais pas comment.

J'ai essayé ceci, mais j'obtiens l'erreur:

‘qt_metatype_id " n'est pas un membre de ‘QMetaTypeId’

void MainWindow::itemActivated( QListWidgetItem * item )
{
    Image * im = item->data(Qt::UserRole).value<Image *>();
    qDebug( im->getImage().toAscii() );
}

Tout soupçon?

Image * im = item->data(Qt::UserRole).value<Image *>();
À partir de la QVariant(int typeId, const void *copy) ctor de la documentation: "d'Habitude, vous n'aurez jamais à utiliser ce constructeur, l'utilisation QVariant::fromValue() au lieu de construire des variantes du type pointeur représenté par QMetaType::étoile du néant, et QMetaType::QObjectStar."
Notez également que le type de &im est Image**, pas Image*.

OriginalL'auteur Leonardo M. Ramé | 2010-10-08