私はC++クラスをQtWebkitのJavascriptオブジェクトにマップするQtアプリケーションを作成しています。まず、私がやろうとしていますかを説明しましょう:Qtプログラミング:QVariantMapでカスタムデータ型を使用するには?
私は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
このことについて任意のアイデア?コンパイラのよう
また、私はこの試みた:(http://stackoverflow.com/questions/956335/subclass-of-qobject-qregistermetatype-and-the-private-copy-constructor をが、ここで説明しているように、まだ –
を動作しませんでしたseemd http://doc.trolltech.com/4.7/qmetatype.html#Q_DECLARE_METATYPE)では、パブリックのデフォルトコンストラクタ、パブリックコピーコンストラクタ、パブリックデストラクタを宣言する必要があります。コピーコンストラクタはありません。そこで、コンパイラはプライベート –
QObjectsとして宣言されたマザークラス(QObject)の1つを使用しようとします。また、QObjectsはコピーされるはずのバリアントとして、QVariantはうまくいっていません。 –