質問

QTWebKitのJavaScriptオブジェクトにC ++クラスをマップするQTアプリを作成しています。まず、私がやろうとしていることを説明させてください:

QObjectから継承されたクラスがあります。

class myobj : public QObject {
    Q_OBJECT
public:
    myobj();
    ~myobj();

pulbic slots:
    void getData();
}

また、別のクラスでQVariantMapにMyOBJインスタンスを追加しようとしました。

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 aを取る myobj パラメーターとして。使用しようとしましたか qVariantFromValue 代わりに機能しますか?

これがあなたが探しているものだと思います。

他のヒント

Q_DECLARE_METATYPE(MYOBJ)にカスタムタイプを登録する場合、クラスにはパブリックデフォルト構造者(OK)、パブリックデストラクタ(OK)、パブリックコピーコンストラクター(エラーメッセージが表示されているものがありません)が必要です。 ドキュメンテーション.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top