[英]Can Repeater Model execute JAVASCRIPT?
我在QML中有一个XmlListModel
XmlListModel {
id: model
source: "qrc:/Config/myConfig.xml"
query: "/levels/level"
XmlRole { name: "levName"; query: "@levName/string()" }
XmlRole { name: "from"; query: "from/number()" }
XmlRole { name: "to"; query: "to/number()" }
}
读取此XML文件
<levels parId = "3">
<level levelName = "level1">
<from>0</from>
<to>1</to
</level>
<level levelName = "level2">
<from>1</from>
<to>2</to>
</level>
</levels>
我也有一个text元素:
Text {
id: myText
x: 0; y:0
text: ""
}
我需要遍历XmlListModel
,以便根据在myList.get(3).value
找到的内容为myText.text
分配正确的级别,其中myList
是ListModel
。
例:
如果myList.get(3).value
在0
(包括)和1
(排除)之间,我必须设置myText.text = "level1"
,如果它在1
(包括)和2
(排除)之间,则必须设置myText.text = "level2"
,依此类推...
有什么建议吗?
不幸的是,您不能像give me the value, where x is between role from and role to
那样在O(1)
查询XmlListModel give me the value, where x is between role from and role to
。
对您有好处,您有一个有序列表,因此可以在XmlListModel
上执行二进制搜索。 该算法基本上是这样的:
首先,请检查您的搜索值是否恰好是中间的那个。 如果较小,则在下半部分的中间搜索,如果较大,则在上半部分的搜索...依此类推。
这样,您可以在O(log n)
中找到您的值,其中n
是XmlListModel
的条目数。
https://zh.wikipedia.org/wiki/Binary_search_algorithm
如果已实现此功能,则可以在模型上工作-使用JavaScript或C ++或Python ...,您可以像这样:
Text {
text: binarySearch(model, myList.get(3).value).levName
}
当您实现此算法时,请确保处理差距。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.