无法在 QML/C++ 中使用绑定对象初始化 UI



我把一个QtQuick.Controls 2.xRangeSlider放到一个组件中。我已将其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属性。我不能保证这会起作用,但这可能是一个优雅的解决方案。我还没有尝试过。

最新更新