Pregunta

Estoy escribiendo una aplicación Qt que se asigna una clase de C ++ al objeto Javascript en QtWebKit. En primer lugar permítanme explicar lo que estoy tratando de hacer:

Tengo una clase heredada de QObject:

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

pulbic slots:
    void getData();
}

Y en otra clase He intentado añadir myObj casos a 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;
}

Y entonces me dieron el siguiente error:

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

Así que traté de añadir declaraciones:

Q_DECLARE_METATYPE(myobj);

Pero tengo:

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

Cualquier idea sobre esto?

¿Fue útil?

Solución

Al igual que el compilador dijo, ningún constructor de QVariant existe que echar un myobj como parámetro. ¿Ha tratado de utilizar la función de qVariantFromValue lugar?

creo que esto es lo que está buscando.

Otros consejos

Si se registra el tipo personalizado con Q_DECLARE_METATYPE (myObj), su clase necesita un Constuctor público predeterminado (bien), un destructor pública (bien) y un constructor de copia pública (falta el que el mensaje de error que le está diciendo), consulte la documentación .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top