You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QML中如何存储整型键值对以关联开关状态与对应旋转角度?

QML存储整型键值对的简洁方案

QML 原生支持通过 var 类型属性直接存储 JS 风格的键值对象,完全兼容后续 JS 代码操作,你需要的写法可以直接改成如下可运行形式:

Item {
    id: parentWheelSwitch
    property int status: 0
    // 注意对象字面量外层要加括号,避免QML解析器将大括号识别为代码块
    property var posMap: ({
        1: 30,
        2: 15,
        0: 0,
        3: -15,
        4: -30,
        5: -45,
        6: -75
    })
}

使用时直接按照JS对象的方式取值即可,比如获取当前status对应的角度:

var currentAngle = parentWheelSwitch.posMap[parentWheelSwitch.status]

你也可以正常对这个对象做增删改查操作,和普通JS对象没有区别。


针对你的具体场景还有更简化的方案:你的状态键是0~6连续的整型,直接用数组存储性能更好,写法更简洁:

Item {
    id: parentWheelSwitch
    property int status: 0
    // 数组下标对应状态值,值对应角度
    property var posArr: [0, 30, 15, -15, -30, -45, -75]
}

取值时直接写 parentWheelSwitch.posArr[parentWheelSwitch.status] 即可。


如果不需要在运行时修改这个映射关系,可以用Object.freeze()包裹对象/数组,避免误修改:

property var posMap: Object.freeze({
    1: 30,
    2: 15,
    0: 0,
    3: -15,
    4: -30,
    5: -45,
    6: -75
})

内容的提问来源于stack exchange,提问作者rustyBucketBay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 17:15:02