的ListModel在QML,从模型

问题描述:

获取对象我有一个ListModel的,我填写以下方式:的ListModel在QML,从模型

property ListModel projects: ListModel {} 
property Project currentProject : null 

function initialization(){ 
    var comp = Qt.createComponent("Project.qml"); 
    var object = comp.createObject(parent,{}); 
    projects.append(object); 
    currentProject = projects.get(0) 

} 
Component.onCompleted: root.initialization(); 

而且我有currentProject = projects.get(0)线错误。 错误文本:

main.qml:14: Error: Cannot assign QObject* to Project_QMLTYPE_0* 
+1

作为解决方法,我建议将'属性'更改为'属性QtObject currentProject:null' –

+0

谢谢,它可用,但这看起来很糟糕 – Dcow

当您Project对象追加到的ListModel,它被添加到ListModel的Project对象的属性(如ListModel的角色),而不是Project对象本身。因此,当您使用ListModel.get()时,返回对象只是一个ListModel角色作为属性的对象(与QObject *相同),但不是Project对象。

更简单,ListModel不是您的Project对象的容器。它只是存储Project对象的属性。

+0

有趣!谢谢。顺便说一下,你能帮助选择容器吗? – Dcow

+1

最好使用[数据模型](http://doc.qt.digia.com/stable/qdeclarativemodels.html)设计来保存数据并显示您的用户界面。如果你的'Project'是一个UI,使它成为视图的代理(ListView,Repeater等),然后将数据插入ListModel。如果您只想保留数据,请将其放入JavaScript数组中并存储在[variant](http://doc.qt.digia.com/qt/qml-variant.html)中。您也可能对[QML列表类型](http://doc.qt.digia.com/4.7-snapshot/qml-list.html)感兴趣, – Dickson