QVariant e qRegisterMetaType domanda
Domanda
Ho una classe Confezione e ho bisogno di usarlo sotto forma di QVariant.
Alla fine della mia Pkg.h ho:
Q_DECLARE_METATYPE(Pkg)
e questo non dà errori di compilazione, ma nella mia main.cpp devo fare:
qRegisterMetaType<Pkg>("Pkg");
e questo non dà errori troppo, ma quando cerco di creare un QVariant (Pkg) ottengo un sacco di errori come:
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&)
ed errori oltre gli errori di nuovo ...
Soluzione
Il costruttore QVariant non basta prendere qualsiasi tipo di età. È necessario utilizzare QVariant :: setValue () o qVariantFromValue .
Altri suggerimenti
ahhhhh risolto, molte grazie, ho usato:
item->data(1,Qt::UserRole).value<Pkg>();
elemento è la QTreeWidgetItem selezionato in questo evento:
connect(packList,SIGNAL(itemClicked(QTreeWidgetItem*, int)), SLOT(setActualPackage(QTreeWidgetItem*)));
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow