Frage

Ich schreibe eine Qt-Anwendung, die Karten eine C ++ Klasse Javascript-Objekt in QtWebKit. Zunächst lassen Sie mich erklären, was ich zu tun versuchen:

Ich habe eine Klasse von QObject geerbt:

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

pulbic slots:
    void getData();
}

Und in einer anderen Klasse habe ich versucht, myobj Instanzen QVariantMap hinzuzufügen:

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;
}

Und dann bekam ich folgende Fehlermeldung:

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

So habe ich versucht, Erklärungen hinzuzufügen:

Q_DECLARE_METATYPE(myobj);

Aber ich habe:

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

Jede Idee, über das?

War es hilfreich?

Lösung

Wie die Compiler gesagt, existiert kein Konstruktor QVariant dass ein myobj als Parameter übernehmen. Haben Sie die qVariantFromValue Funktion stattdessen zu verwenden versucht?

Ich denke, das ist das, was Sie suchen.

Andere Tipps

Wenn Sie Ihren benutzerdefinierten Typen mit Q_DECLARE_METATYPE (myobj) registrieren, der Klasse einen öffentlichen Standard Konstruktor (ok) braucht, ein öffentliches destructor (ok) und ein öffentliches Copykonstruktor (FEHLEND welche die Fehlermeldung sagen Sie) finden Sie in der Dokumentation .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top