隨着Qt5.7,我使用了StackView中的幾個QML Objects
切換:QML:StackView和C++約束變量
StackView {
id: stack
anchors.fill: parent
initialItem: initObj
}
Component {
id: initObj
ModuleHome {}
}
Component {
id: obj1
Module1 {}
}
// ...
stack.push({item: item, replace: true, destroyOnPop: true})
其中item
是即obj1
。 它的作品,我可以很容易地添加一個動畫的過渡。
問題出在我的對象裏面。 他們中有些人勢必C++一些變量,我用它來更新UI,即:
property int itemSize: MyClass.itemSize
onItemSizeChanged {
// do something
}
之前遷移到StackView
在啓動時創建的所有我的對象,他們是「活的」,因此他們聽取itemSize
的變化。 現在,只有當它們可見時纔會聽,所以它們不會做我需要的「某些東西」,因爲這些更改可能已經發生(即我在啓動時從設置文件中讀取)。
一個解決方案是調用Component.onCompleted
事件中的C++方法來請求最後一次更新變量。它會起作用,但我會放棄限制變量的好處。
有沒有其他的智能方式?即自動強制更新組件負載上的綁定變量。
設置'Component.onCompleted'事件中的變量值似乎有訣竅。 – Mark