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 ...

È stato utile?

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
scroll top