#include #include #include #include class MyObject : public QObject { Q_OBJECT Q_PROPERTY(QDeclarativeListProperty getInfo READ getInfo CONSTANT) public: MyObject() { } ~MyObject() { } QDeclarativeListProperty getInfo() { for (int i = 0; i < 10; ++i) { list << new MyObject(); } return QDeclarativeListProperty(this, 0, &MyObject::appendObject, 0, 0, &MyObject::clearObject); } static void appendObject(QDeclarativeListProperty *l, MyObject *obj) { MyObject *object = qobject_cast(l->object); if (object) object->list << obj; } static void clearObject(QDeclarativeListProperty *l) { qDebug("In clear"); MyObject *object = qobject_cast(l->object); if (object) { foreach (MyObject *o, object->list) delete o; object->list.clear(); } } QList list; }; #include "main.moc" int main(int argc, char** argv) { QApplication app(argc, argv); QDeclarativeView view; qmlRegisterType("QtQuick", 1, 0, "MyObject"); view.setSource(QUrl::fromLocalFile("c:/work/bugs/4.7/276894/test.qml")); view.show(); return app.exec(); }