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ライセンスの下で利用可能です。
詳細はこちらをご覧ください。