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

iQt*_*iQt 4 javascript qt dictionary qml

我正在尝试在QML中的函数中创建地图。我尝试了这个:

    var myMap= new Map()
    var length = myArray.count
    for (var i = 0; i < length; i++)
        myMap.set(i, true)
Run Code Online (Sandbox Code Playgroud)

它不会抱怨Map本身的创建,而是set方法。这是应用程序在运行时输出的内容:

TypeError: Property 'set' of object  is not a function
Run Code Online (Sandbox Code Playgroud)

我以此为参考来了解Map的可用方法:

地图文件

看起来QML不支持调用set方法。我试图找到一些有关QML支持和不支持的文档,但找不到。这使得很难知道,因为在编写和运行代码之后我无法找到。

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

sky*_*ack 5

我想您会误解QML中Map对象什么
我强烈怀疑那不是您所期望的。

相反,QML QVariantMap和JavaScript对象之间具有自动类型转换

这意味着,当您在QML环境中工作并想要创建map时,应该依靠普通的JavaScript对象及其键值模型。

这是一个问题:

var myMap= { };
var length = myArray.count;
for (var i = 0; i < length; i++)
    myMap[i] = true;
Run Code Online (Sandbox Code Playgroud)


mar*_*rsl 5

这对我有用(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)
}
...
Run Code Online (Sandbox Code Playgroud)