2011-06-30 17 views
2

是否有任何爲什麼要在運行時從qml文件添加項目到QDeclarativeListProperty? 在一個循環,例如:qt QDeclarativeListProperty從qml應用程序添加項目

var i;
for(i = 0 ; i < 100 ; ++i)
{ listOfItems.append(MyItem {text:"list"+i})
}

和LISTOFITEMS是QDeclarativeListProperty列表... 我不想這樣做:

listOfItems:  
    [    
     MyItem{text:"list val1"}, 
     MyItem{text:"list val2"},  
     ...... 
    ] 

我在QML顯示列表和該列表的數據來自qt對象....

回答

2

你不能,QDeclarativeListProperty(或QQmlListProperty在QT5)受到影響只有一次,在instanciation時間,你不能追加/後刪除元素在裏面。

更多信息,在JavaScript代碼中,不能使用Class { }語法形式,它是QML特有的。

+0

如果您想從JS命令代碼創建新的QML對象,則必須使用'Qt.createComponent() '方法,但是無論如何你都無法將創建的對象影響到列表屬性。 – TheBootroo

+0

也許如果您需要項目列表,請先使用正確的方法創建組件,然後將對此項目的引用添加到可包含Js數組的'var'屬性中,以便您可以在其中使用.push(myitem) 。 – TheBootroo

+0

如果你需要這個數組作爲C++端,你將需要一些QVariantList棘手的事情,所以想想看,如果你真的需要這個概念,或者如果你可以做另一個更簡單。 – TheBootroo