我正在尝试在QML中的函数中创建一个地图。我试过这个:
var myMap= new Map()
var length = myArray.count
for (var i = 0; i < length; i++)
myMap.set(i, true)
它不会抱怨Map本身的创建,而是set方法。这是应用程序在运行时输出的内容:
TypeError: Property 'set' of object is not a function
我用它作为Map的可用方法的参考:
看起来QML不支持调用set方法。我试图找到一些关于QML做什么和不支持的文档,但找不到它。这让我很难知道,因为我在之后找不到我编写并运行代码。
有没有人能够在QML中使用Map和/或知道在哪里可以找到有关QML支持的QML功能的文档?
答案 0 :(得分:5)
我猜你是误会input pipeline 我强烈怀疑这不是你所期望的那样。
相反,QML有batching functions。
这意味着当您在QML环境中工作并想要创建 map 时,您应该依赖纯JavaScript对象及其键值模型。
这是一个问题:
var myMap= { };
var length = myArray.count;
for (var i = 0; i < length; i++)
myMap[i] = true;
答案 1 :(得分:2)
这对我有用(Qt 5.14.2)。
...
Label {
property var stateInfo: (new Map([
[MyCustomCPPType.State.Idle, "Idle"],
[MyCustomCPPType.State.Collecting, "Collecting"],
[MyCustomCPPType.State.Done, "Done"]
]))
text: stateInfo.get(MyCustomCPPTypeInstance.state)
}
...
答案 2 :(得分:1)
我认为我的答案的先前版本不正确。
据我了解所有JS对象,可以在QML中使用的属性和函数列出here。 ECMA-262规范仅代表对文档中列出的对象的引用,而不代表其他内容。不幸的是,您无法正确使用Map
对象。