首页 > 解决方案 > QML本地存储不能分配给布尔变量中不同类型的现有角色?

问题描述

我正在 Qt Creator 上制作应用程序。我有一个这样的工具按钮:

ToolButton {
    icon.source: (star) ? "icons/star.svg" : "icons/star-border.svg"
    onClicked: {
        star = !star
        Data.update(number, star)
    }
    states: State {
        name: "pressed"; when: parent.pressed === true
        PropertyChanges { target: parent; icon.source: (star) ? "icons/star.svg" : "icons/star-border.svg" }
    }
    transitions: Transition {
        from: ""
        to: "pressed"
        reversible: true
    }
}

一切都按预期工作,但是当单击 ToolButton 时,应用程序输出上会出现此错误:

未知文件:无法分配给不同类型的现有角色“星”[Bool -> Number]

看起来这一行是导致错误的原因:star = !star 其中star变量是来自数据库(本地存储)的布尔值。

修复它重要吗?

如何解决?

这是改变的正确方法吗icon.source onClick???

标签: qtqmlqt5

解决方案


Local Storage 使用 SQLite,在 SQLite 中没有 boolean,所以 Boolean 变量映射为 0 或 1。

对于替换的解决方法:

star = !star 

经过

star = star ? 0: 1 

推荐阅读