Question

J'ai une classe Emb et je dois l'utiliser sous forme de QVariant.

A la fin de mon Pkg.h je:

Q_DECLARE_METATYPE(Pkg)

et cela ne donne pas des erreurs de compilation, mais dans mon main.cpp je dois faire:

qRegisterMetaType<Pkg>("Pkg");

et cela ne donne pas trop d'erreurs, mais je reçois beaucoup d'erreurs comme lorsque je tente de créer un QVariant (Emb):

In member function 'void MainWindow::FillPackagesList()':  
mainWin.cpp:233: error: 'qRegisterMetaType' isnot a member of 'QMetaType' mainWin.cpp:234: error: no matching function for call to QVariant::QVariant(Pkg&)'                                             

/usr/lib/qt/include/QtCore/qvariant.h:208: note: QVariant::QVariant(Qt::GlobalColor)           
/usr/lib/qt/include/QtCore/qvariant.h:206: note: QVariant::QVariant(const QRegExp&)            
/usr/lib/qt/include/QtCore/qvariant.h:204: note: QVariant::QVariant(const QLocale&)            
/usr/lib/qt/include/QtCore/qvariant.h:203: note: QVariant::QVariant(const QUrl&)               
/usr/lib/qt/include/QtCore/qvariant.h:201: note: QVariant::QVariant(const QRectF&)             
/usr/lib/qt/include/QtCore/qvariant.h:200: note: QVariant::QVariant(const QRect&)          

et les erreurs sur erreurs encore ...

Était-ce utile?

La solution

Le constructeur QVariant ne prendra pas ne importe quel type ancien. Vous devez utiliser QVariant :: setValue () ou qVariantFromValue .

Autres conseils

ahhhhh résolu, merci beaucoup, j'ai utilisé:

 item->data(1,Qt::UserRole).value<Pkg>();

élément est le QTreeWidgetItem sélectionné dans cet événement:

connect(packList,SIGNAL(itemClicked(QTreeWidgetItem*, int)), SLOT(setActualPackage(QTreeWidgetItem*)));
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top