QTプログラミング:QVariantMapでカスタムデータ型を使用する方法は?
-
29-09-2019 - |
質問
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)、パブリックコピーコンストラクター(エラーメッセージが表示されているものがありません)が必要です。 ドキュメンテーション.
所属していません StackOverflow