2013-02-02 42 views
2

獲取對象我有一個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

回答

3

當您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