C
Default state limitations
The default state in Qt Quick Ultralite is fixed, containing only the property bindings defined in the same QML file where the QML object is defined. However, the default state in Qt Quick is a snapshot of the component's current properties and their value. This snapshot is restored when switching back to the default state from another state.
// 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 }
Workaround
You can workaround this limitation by binding an object's property to a locally declared property to create customizable default state:
// 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 }
Available under certain Qt licenses.
Find out more.