应用程序设置为记住其设置,但首次启动时出现问题
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?
- 第一次启动时,在没有设置文件的情况下,将SpinBox值设置为一个合理的值
- 稍后启动时,当有设置文件时,记住之前设置的 SpinBox 值
您不需要 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
}
我正在使用 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?
- 第一次启动时,在没有设置文件的情况下,将SpinBox值设置为一个合理的值
- 稍后启动时,当有设置文件时,记住之前设置的 SpinBox 值
您不需要 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
}