C

默认状态限制

Qt Quick Ultralite 中的默认状态是固定的,只包含定义在同一 QML 文件中 QML 对象所定义的属性绑定。然而,Qt Quick 的默认状态是组件当前属性及其值的快照。此快照在切换回默认状态时恢复。

// MyItem.qml
Button {
    id: root
    states: [State { name: "state1"; PropertyChanges { target: root; x: 15 } }]
    x: 5 // defines the default state value

    onClicked: {
        root.x = 10
        root.state = "state1" // x changes to 15
        root.state = "" // x changes to 5, not to 10
    }
}

// Other.qml
MyItem {
    x: 11 // does not change the default state value of x to 5
}

解决方案

您可以通过将对象的属性绑定到一个本地声明的属性上,以创建可定制的默认状态来解决这个问题。

// MyItem.qml
Text {
    property string defaultText: "default state"
    text: defaultText // this generates a binding which is then used by the \l {qmltocpp} to generate a default state
    ...
}

// Other.qml
MyItem {
    defaultText: "new default state" // MyItem displays this text instead of "default state" when swtiching to the default state
}

在某些 Qt 许可证下可用。
了解更多。