我把一个QtQuick.Controls 2.x
的RangeSlider
放到一个组件中。我已将其min.value
绑定到我的模型对象,该对象是QObject
的子类,并且已公开给 QML 上下文。
我可以使用名称从QML访问它:"设置"。该控件应该读取加载程序onLoaded:{...}
中的设置以初始化自身。我在Loader
之外有一个Binding
对象来写回min.value
的任何更改。但是控件始终首先设置设置的属性,因此我无法使用设置的性能对其进行初始化。
Loader {
id: loader
sourceComponent: ctrl
onLoaded: {
loader.item.min = settings.min
}
}
Binding {
target: settings
property: "min"
value: loader.item.min.value
}
Component {
id: ctrl
Item {
property alias min: slider.first
RangeSlider {
id: slider
...
}
}
}
我想分配loader.item.min.value
(即 slider.first.value
( 的 settings.min 的值,但在进行此分配之前,设置.min 更改为 slider.first.value
。用户设置新值后,我希望将settings.min
设置为 slider.first.value
。
有没有人知道如何正确实现这一点?
Binding
-Object 的 when
-属性来停用绑定,直到设置了初始值。将其最初设置为 false
,并将其更改为 onLoaded
-handler 的第一行中的true
同样非常有趣的是delayed
属性。我不能保证这会起作用,但这可能是一个优雅的解决方案。我还没有尝试过。