我有一个类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&) 一次又一次的错误...
发布于 2008-12-11 02:08:48
QVariant构造函数不会只接受任何旧类型。您需要使用QVariant::setValue()或qVariantFromValue。
发布于 2008-12-11 19:07:13
啊哈解决了,非常感谢,我用了:
item->data(1,Qt::UserRole).value<Pkg>();item是在此事件中选择的QTreeWidgetItem:
connect(packList,SIGNAL(itemClicked(QTreeWidgetItem*, int)), SLOT(setActualPackage(QTreeWidgetItem*)));https://stackoverflow.com/questions/357537
复制相似问题