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

3

是否有办法使用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

我进行了一些测试,我认为您无法动态修改状态列表(似乎它是一个对象而不是内部数组)!?

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

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?

你可以遍历所有现有状态和其他内容,但似乎状态对象是不可改变的,或者我在这里漏掉了些什么?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接