应用程序设置为记住其设置,但首次启动时出现问题

Application is set to remember its settings, but has problem with the very first launch

我正在使用 QML Settings 让应用程序记住 SpinBox 输入值:

import Qt.labs.settings 1.0

SpinBox {
    id: dimensionSpinBox
    to: 5000
    stepSize: 1
    from: 1
}

Settings {
    // Value is remembered by QML in a settings file somewhere
    category: "App_Dimension_Input"
    property alias dimension: dimensionSpinBox.value
}

问题 1

在用户第一次启动应用程序时,当没有可用的设置文件时,SpinBox 值变为最小值 from 或最大值 to,这在由于某些功能依赖于 SpinBox 值而导致的应用程序。最小值和最大值是不可取的,但合理的值应该是 125.

解决问题 1

我通过将这些添加到 SpinBox 来解决问题 1

SpinBox {
    // ...
    value: 125
    Component.onCompleted: {
        value = Qt.binding(function(){return 125})
    }
}

现在,在用户首次启动时,应用程序启动时将 SpinBox 值设置为合理的 125

问题 2

解决了问题 1 后,又出现了另一个问题:应用程序在以后启动时不会记住 SpinBox 值,而是始终将其设置为 125!

如何?

如何同时解决问题1和问题2?

您不需要 Component.onCompleted: value = Qt.binding(function(){return 125}) 行,那是覆盖设置值的内容。 通常只需声明式绑定就足够了:

SpinBox {
    id: dimensionSpinBox
    to: 5000
    stepSize: 1
    from: 1
    value: 125 // the initial value when no settings has been saved
}

Settings {
    category: "App_Dimension_Input"
    property alias dimension: dimensionSpinBox.value
}