如何使用JavaScript动态定义QML状态

时间:2014-04-07 14:24:54

标签: javascript arrays qt dynamic qml

有没有办法使用javascript循环动态创建状态对象。

结果应如下所示:

states: [
    State{
        name: "name1"
        when: somevar === onevar

        //stuff
    },
    State{
        name: "name2"
        when: somevar === anothervar

        //stuff
    }
]

但我想从一个任意的javascript数组开始,比如

var myStatesObj = [{
    "name": "name1"
    "condition": onevar
},{
    "name": "name2"
    "condition": anothervar
}]

并使用循环来创建状态QML对象。

这可能吗?

1 个答案:

答案 0 :(得分:0)

我做了一些测试,我认为你不能动态修改状态列表(看起来它是一个对象,内部没有数组)!?

这是我的测试: 创建一个动态状态(使用组件模板)

Component {
    id: stateTemplate
    State {}
}

// then use this code to create an state object
var st = stateTemplate.createObject(parent, { name: "testSate", when: yourCondition })

尝试添加状态

states.push(st) // error because "states" is not an array!?
states[states.length] = st // no error but the stages object didn't change at all?

你可以迭代所有现有状态和所有状态,但似乎状态对象不可更改或我在这里遗漏了什么?