Thanks, however it's not working for me. There are a few things that are 
eluding me. I took the plugin example and tried to merge in your comments. Not 
only, I am not displaying the data. I am getting the following errors to the 
console
QDeclarativeExpression: Expression "(function() { return myPluggedInObj.myModel 
})" depends on non-NOTIFYable properties:     MyObj::myModel

It just does not work. What am I doing wrong?

This would be my plugin.cpp

#include <QtDeclarative/QDeclarativeExtensionPlugin>#include 
<QtDeclarative/qdeclarative.h>#include <qdebug.h>#include <qdatetime.h>#include 
<qbasictimer.h>#include <qapplication.h>
#include <QStringList>
class MyObj : public QObject {        Q_OBJECT        Q_PROPERTY(QStringList 
myModel READ myModel);        QStringList myModel() const {            
            QStringList aStringList;            aStringList.append( "Fred" );   
         aStringList.append( "1" );            aStringList.append( "2" );       
     aStringList.append( "3" );            return aStringList; }};

class QExampleQmlPlugin : public QDeclarativeExtensionPlugin{    
Q_OBJECTpublic:    void registerTypes(const char *uri)    {               
Q_ASSERT(uri == QLatin1String("com.nokia.TimeExample"));        
qmlRegisterType<MyObj>(uri, 1, 0, "MyObj");    }};

#include "plugin.moc"
Q_EXPORT_PLUGIN2(qtimeexampleqmlplugin, QExampleQmlPlugin);
 this would be my qml file  plugins.qml 
import Qt 4.7import com.nokia.TimeExample 1.0 // import types from the plugin

Rectangle {    width: 600; height: 300; color: "white"
    // MyPets model is defined in dummydata/MyPetsModel.qml    // The viewer 
automatically loads files in dummydata/* to assist    // development without a 
real data source.    // This one contains my pets.    // Define a delegate 
component.  A component will be    // instantiated for each visible item in the 
list.    Component {        id: petDelegate        Item {            width: 
200; height: 50            Column {                Text { text: modelData }     
       }        }    }

    MyObj { id: myPluggedInObj }
    ListView {        id: list1        width: 200; height: parent.height        
model: myPluggedInObj.myModel;        focus: true    }

//   MyObj { id: myPluggedInObj }//   ListView { model: myPluggedInObj.myModel; 
}
}












> From: warwick.alli...@nokia.com
> To: bart...@live.com; qt-qml@trolltech.com
> Date: Tue, 18 May 2010 00:34:57 +0200
> Subject: RE: [Qt-qml] C++ Data Models and plugin mechanism
> 
> > 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
                                          
_________________________________________________________________
Win a $10,000 shopping spree from Hotmail! Enter now.
http://go.microsoft.com/?linkid=9729711
_______________________________________________
Qt-qml mailing list
Qt-qml@trolltech.com
http://lists.trolltech.com/mailman/listinfo/qt-qml

Reply via email to