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

标签 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 对象。

这可能吗?

最佳答案

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

这里是我的测试: 创建一个动态状态(确实适用于组件模板)

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?

您可以遍历所有现有状态和所有内容,但状态对象似乎不可更改,或者我在这里遗漏了什么?

关于javascript - 如何使用 JavaScript 动态定义 QML 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22915235/

相关文章:

c++ - QT - QTreeView 具有不同颜色的 QTreeView 项目子组

javascript - {} 和 () 与 .map 与 Reactjs 的区别

php 数组到 2d Javascript 数组

javascript - 当我更改屏幕尺寸时,我的 javascript 变量值出错

C# - 如何从数组列表中提取一个特定数组成员的列表

php - json_decode 使用 mysqli 返回数组 1

c++ - C++中用指针删除数组--多维与多指针--C++

c++ - 使用 Qt 的汉诺塔

javascript - 如何从javascript中的另一个函数中的ajax成功访问变量

c++ - 在 QLabel 上将 float 显示为 QString 显示 "G",其中点 "."应该去