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
正确的级别,其中 myList
是ListModel
.
示例:
如果myList.get(3).value
在0
(含)和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
}
当你实现这个算法时,一定要处理好差距。
我在 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
正确的级别,其中 myList
是ListModel
.
示例:
如果myList.get(3).value
在0
(含)和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
}
当你实现这个算法时,一定要处理好差距。