我確實有一堆名爲「config_1.xml」,「config_2.xml」,「config_3.xml」等的xml文件。Qml具有多個SOURCES的XmlListModel
基本上,我需要從第一個循環到最後一個,在SAME XmlListModel中追加在每個xml文件的查詢上下文/ info /參數中找到的所有「id」。
所以,一旦閱讀完成,我會有整個id列表。
我嘗試:
property int myIterator: 1
Repeater {
model: 10 //10 is just an example. I have this number in my code by other functions.
XmlListModel {
id: myModel
source: "qrc:/ConfigFiles/config_" + myIterator + ".xml" // <---- THIS IS THE PROPERTY I NEED TO PARAMETRIZE!!!
query: "context/info/parameters"
XmlRole { name: "myId"; query: "id/number()" }
onCountChanged: { ++myIterator; }
}
}
onMyIteratorChanged: {
if (myIterator> 10)
for(var i = 0; i<myModel.count; i++) // myModel.count should be equal to 10!!!
console.log("id: " + myModel.get(i).myId);
}
然而,與此代碼的應用程序崩潰。 我該如何解決它?
我還考慮過在每次迭代時將存儲在myModel中的所有信息轉移到ListModel(其中appen()很容易通過文檔)的想法。但我仍然不知道如何調用XmlListModel n次...
謝謝! :-)
'myModel'的類型是XmlListModel'的'對象的標識符。你必須明白'myModel'不是數組,而是指向對象實例的「指針」。但是'Repeater'是你的情況中的一種數組。所以你可以通過索引使用'Repeater.itemAt(index)' – folibis
@folibis來訪問你的對象,我的觀點是Repeater需要一個Item類型的委託,而不是一個模型。所以我正在尋找一種替代解決方案。怎樣纔能有n XmlListModel? – Elena
用'Instantiator' – GrecKo