我有一个类PKG和我需要使用它之下的QVariant的形式。

目前我Pkg.h的端我有:

Q_DECLARE_METATYPE(Pkg)

和这不给编译错误,但在我的main.cpp我要做的:

qRegisterMetaType<Pkg>("Pkg");

和这不给错误太多,但是当我尝试创建的QVariant(PKG),我有很多的错误,如:

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

和经错误错误再次...

有帮助吗?

解决方案

在的QVariant构造将不只是采取任何旧类型。您需要使用的QVariant :: setValue方法()或的 qVariantFromValue

其他提示

AHHHHH解决,许多感谢,我使用:

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

产品可在此事件中选择的QTreeWidgetItem:

connect(packList,SIGNAL(itemClicked(QTreeWidgetItem*, int)), SLOT(setActualPackage(QTreeWidgetItem*)));
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top