Hi All,

I'm having trouble with assigning qml item properties in C++.  The type is 
declared in qml as a component, and is declared in another qml component as an 
item property.

i.e.

TypeA.qml
QtObject {
        property string myString
}

TypeB.qml
QtObject{
        property TypeA myTypeA
}

I'm creating each of the objects on the c++ side using something like:

QString qml("import Qt 4.7\nTypeB{}\n");
QDeclarativeComponent component(engine);
component.setData(qml.toLatin1(), QUrl(""));
QObject *myTypeB = component.create();

And then wrapping the property using:

QDeclarativeProperty typeAProperty(myTypeB, "myTypeA", engine);

.. where typeAProperty.isValid() returns true, and if I do a 
QDeclarativeProperty::read() I get a QVariant with a type of QVariant::QObject* 
which casts to QObject* correctly.

However when I write the value, using :

...
QObject *myTypeA = component.create()
typeAProperty.write(QVariant::fromValue(myTypeA));

.. it returns false which I guess means the type is incorrect according to the 
metatype, even though the QVariant's type is also QVariant::QObject*.

I know the object creation is working fine, as I can assign the object in the 
root context to a context property, set string and int properties and they are 
binding properly on the qml side.  I couldn't find any examples in the 
documentation that specifically dealt with item properties.  I've managed to 
get lists to work in a similar manner using QDeclarativeListReference, but the 
convention for item properties seems subtly different.

Regards,
Simon.



_______________________________________________
Qt-qml mailing list
Qt-qml@trolltech.com
http://lists.trolltech.com/mailman/listinfo/qt-qml

Reply via email to