Question

Je suis en train d'écrire une application Qt qui associe une classe C ++ pour objet Javascript dans qtwebkit. Tout d'abord laissez-moi vous expliquer ce que je suis en train de faire:

J'ai une classe héritée de QObject:

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

pulbic slots:
    void getData();
}

Et dans une autre classe que j'ai essayé d'ajouter MyObj cas à 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;
}

Et puis je suis l'erreur suivante:

error: no matching function for call to ‘QVariant::QVariant(myobj&)’

J'ai donc essayé d'ajouter des déclarations:

Q_DECLARE_METATYPE(myobj);

Mais je suis:

error: ‘QObject::QObject(const QObject&)’ is private

Une idée à ce sujet?

Était-ce utile?

La solution

Comme l'a dit le compilateur, aucun constructeur de QVariant existe qui prennent un myobj comme paramètre. Avez-vous essayé d'utiliser la fonction qVariantFromValue à la place?

Je pense que c'est ce que vous recherchez.

Autres conseils

Si vous enregistrez votre type personnalisé avec Q_DECLARE_METATYPE (myobj), votre classe a besoin d'un constuctor public par défaut (ok), un destructor public (ok) et un constructeur de copie publique (MANQUE que le message d'erreur vous dit), voir le .

scroll top