、私はいくつかのQML Objects
を切り替えるためにStackViewを使用:QML:Qt5.7とStackView及びC++結合変数
item
、すなわち
obj1
ある
StackView {
id: stack
anchors.fill: parent
initialItem: initObj
}
Component {
id: initObj
ModuleHome {}
}
Component {
id: obj1
Module1 {}
}
// ...
stack.push({item: item, replace: true, destroyOnPop: true})
。 これは動作し、トランジションのアニメーションを簡単に追加できます。
問題はオブジェクトの内側です。 それらのいくつか私はUIを更新するために使用することをC++に結合するいくつかの変数、すなわちあります:StackView
に移行する前に
property int itemSize: MyClass.itemSize
onItemSizeChanged {
// do something
}
をすべての私のオブジェクトが起動時に作成され、彼らは「生きている」だったので、彼らはありましたitemSize
の変更を聞きます。 これは表示されているときだけ聞くので、変更が既に発生している可能性がある(つまり、起動時に設定ファイルから読み込む)ために必要な「何か」をしません。
1つの解決策は、Component.onCompleted
イベントのC++メソッドを呼び出して、varsの最終更新を要求することです。それは動作しますが、バインドされたvarsの利点を失います。
他にもスマートな方法はありますか?私。コンポーネントロード時のバインドされた変数の更新を自動的に強制します。
'Component.onCompleted'イベントの中のvarsの値を設定すると、そのトリックを行うようです。 – Mark