的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*
当您Project
对象追加到的ListModel,它被添加到ListModel的Project
对象的属性(如ListModel的角色),而不是Project
对象本身。因此,当您使用ListModel.get()
时,返回对象只是一个ListModel角色作为属性的对象(与QObject *相同),但不是Project
对象。
更简单,ListModel不是您的Project
对象的容器。它只是存储Project
对象的属性。
有趣!谢谢。顺便说一下,你能帮助选择容器吗? – Dcow
最好使用[数据模型](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
作为解决方法,我建议将'属性'更改为'属性QtObject currentProject:null' –
谢谢,它可用,但这看起来很糟糕 – Dcow