我正在编写一个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)和公共拷贝构建器(错误消息缺少错误消息),请参阅 文档.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top