> 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