Pergunta

Eu tenho uma classe Pkg e eu preciso usá-lo sob forma de QVariant.

No final da minha Pkg.h eu tenho:

Q_DECLARE_METATYPE(Pkg)

e isso não dá erros de compilação, mas na minha main.cpp eu tenho que fazer:

qRegisterMetaType<Pkg>("Pkg");

e isso não dá erros também, mas quando eu tento criar uma QVariant (PKG) recebo muitos erros 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&)          

e erros sobre erros de novo ...

Foi útil?

Solução

O construtor QVariant não basta ter qualquer tipo de idade. Você precisa usar QVariant :: setValue () ou qVariantFromValue .

Outras dicas

ahhhhh resolvido, muito obrigado, eu usei:

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

item é o QTreeWidgetItem seleccionados neste evento:

connect(packList,SIGNAL(itemClicked(QTreeWidgetItem*, int)), SLOT(setActualPackage(QTreeWidgetItem*)));
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top