首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QVariant和qRegisterMetaType问题

QVariant和qRegisterMetaType问题
EN

Stack Overflow用户
提问于 2008-12-10 20:41:35
回答 2查看 2.3K关注 0票数 2

我有一个类Pkg,我需要以QVariant的形式使用它。

在我的Pkg.h结束时,我有:

代码语言:javascript
复制
Q_DECLARE_METATYPE(Pkg)

这不会给出编译错误,但在我的main.cpp中,我必须这样做:

代码语言:javascript
复制
qRegisterMetaType<Pkg>("Pkg");

这也不会给出错误,但是当我尝试创建一个QVariant(Pkg)时,我得到了很多错误,比如:

代码语言:javascript
复制
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&)          

一次又一次的错误...

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2008-12-11 02:08:48

QVariant构造函数不会只接受任何旧类型。您需要使用QVariant::setValue()qVariantFromValue

票数 6
EN

Stack Overflow用户

发布于 2008-12-11 19:07:13

啊哈解决了,非常感谢,我用了:

代码语言:javascript
复制
 item->data(1,Qt::UserRole).value<Pkg>();

item是在此事件中选择的QTreeWidgetItem:

代码语言:javascript
复制
connect(packList,SIGNAL(itemClicked(QTreeWidgetItem*, int)), SLOT(setActualPackage(QTreeWidgetItem*)));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/357537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档