Repeater模型可以执行JAVASCRIPT吗?

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 {
    id: myText
    x: 0; y:0
    text: ""
}

我需要遍历 XmlListModel 以便根据我在 myList.get(3).value 中找到的内容分配给 myText.text 正确的级别,其中 myListListModel.

示例:
如果myList.get(3).value0(含)和1(不含)之间我必须设置myText.text = "level1",如果它在1(含)和[=之间24=](排除)我要设置myText.text = "level2",以此类推...

有什么建议吗?

很遗憾,您无法在 O(1) 中查询您的 XmlListModel,例如 give me the value, where x is between role from and role to

对你有好处,你有一个有序列表,所以你可以对 XmlListModel 执行二进制搜索。算法基本上是这样的:

你先看看你的搜索值是不是恰好是中间那个。小一点就在下半部分中间找,大一点就在上半部分找...以此类推。
有了这个,您可以在 O(log n) 中找到您的值,其中 n 是您的 XmlListModel.
中的条目数 https://en.wikipedia.org/wiki/Binary_search_algorithm

如果你实现了这个,在你的模型上工作 - 在 JavaScript 或 C++ 或 Python 中......你可以像这样:

Text {
    text: binarySearch(model, myList.get(3).value).levName
}

当你实现这个算法时,一定要处理好差距。