Pregunta

Tengo una clase Paquete y necesito usarlo bajo forma de QVariant.

Al final de mi Pkg.h tengo:

Q_DECLARE_METATYPE(Pkg)

y esto no da errores de compilación, pero en mi main.cpp tengo que hacer:

qRegisterMetaType<Pkg>("Pkg");

y esto no da errores también, pero cuando trato de crear un QVariant (PKG) me da un montón de errores como:

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&)          

y los errores más errores de nuevo ...

¿Fue útil?

Solución

El constructor QVariant no acaba de tomar cualquier tipo de edad. Es necesario utilizar QVariant :: setValue () o qVariantFromValue .

Otros consejos

ahhhhh resuelto, muchas gracias, he utilizado:

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

elemento es el QTreeWidgetItem seleccionada en este caso:

connect(packList,SIGNAL(itemClicked(QTreeWidgetItem*, int)), SLOT(setActualPackage(QTreeWidgetItem*)));
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top