> So you can only extend QML Data Model by reimplementing
> QDeclarativeView. Am I correct?

Fortunately not. setContextProperty is just ONE way of creating an identified 
object.

To make a model as a type in a plugin, just inherit your type from 
QAbstractItemModel (rather than QDeclarativeItem as you would for an item type 
plugin), register the type in the normal plugin manner:

        qmlRegisterType<MyModel>(uri,1,0, "MyModel");

Then you can instantiate your model from QML, giving it whatever id you like, 
then using it in views:

import myplugin 1.0
Item {
   ...
   MyModel { id: myPluggedInModel }
   ListView { model: myPluggedInModel; ... }
}

Plugins can provide any type that subclasses QObject, and QML code can then 
import that plugin and instantiate the type.

If you want a more simple model, such as the QStringList example in to C++ 
model documentation, you could make your plugin type just a simple QObject with 
the stringlist as a property:

class MyObj : public QObject {
        Q_OBJECT
        Q_PROPERTY(QStringList myModel READ myModel);
        QStringList myModel() const { return QStringList() << "Fred" << 
"Ginger" << "Skipper"; }
};

Register as normal:

        qmlRegisterType<MyObj>(uri,1,0, "MyObj");

then:

import myplugin 1.0
Item {
   ...
   MyObjl { id: myPluggedInObj }
   ListView { model: myPluggedInObj.myModel; ... }
}


I'll improve the docs in this regard.

--
Warwick

_______________________________________________
Qt-qml mailing list
[email protected]
http://lists.trolltech.com/mailman/listinfo/qt-qml

Reply via email to