QT编程:如何在QVariantMap中使用自定义数据类型?
-
29-09-2019 - |
题
我正在编写一个QT应用程序,该应用将C ++类映射到QTWEBKIT中的JavaScript对象。首先,让我解释一下我要做的事情:
我有一个从qobject继承的类:
class myobj : public QObject {
Q_OBJECT
public:
myobj();
~myobj();
pulbic slots:
void getData();
}
在另一堂课中,我试图将MyOBJ实例添加到qvariantmap:
QVariantMap anotherClass::getObj() {
myobj* obj1 = new myobj();
myobj* obj2 = new myobj();
QVariantMap items;
items.insert(QString("0"), QVariant(*obj1));
items.insert(QString("1"), QVariant(*obj2));
return items;
}
然后我得到以下错误:
error: no matching function for call to ‘QVariant::QVariant(myobj&)’
因此,我尝试添加声明:
Q_DECLARE_METATYPE(myobj);
但是我得到了:
error: ‘QObject::QObject(const QObject&)’ is private
对此有任何想法吗?
解决方案
就像编译器所说的那样,没有 QVariant
存在 myobj
作为参数。您是否尝试使用 qVariantFromValue
功能?
我认为这就是您正在寻找的内容。
其他提示
如果您使用q_declare_metatype(myobj)注册自定义类型,则您的同类需要公共默认强制器(OK),公共驱动器(OK)和公共拷贝构建器(错误消息缺少错误消息),请参阅 文档.
不隶属于 StackOverflow