是否无法在QML中创建地图数据类型?

时间:2016-06-02 18:17:29

标签: javascript qt dictionary qml

我正在尝试在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的可用方法的参考:

Map documentation

看起来QML不支持调用set方法。我试图找到一些关于QML做什么和不支持的文档,但找不到它。这让我很难知道,因为我在之后找不到我编写并运行代码。

有没有人能够在QML中使用Map和/或知道在哪里可以找到有关QML支持的QML功能的文档?

3 个答案:

答案 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对象。