如何在应用程序的生存期内保留 QML 设置



我正试图创建一个具有";不再提示";选项但是,因为它是堆栈视图的一部分,所以对话框会定期被销毁,它的属性也会被销毁。如何创建在应用程序生命周期内持久的设置,但在应用程序启动时重置为默认值?

Item {
Button {
id: backButton
text: "Go Back"
// todo: Figure out how to set this just once at the start of the application
property bool promptOnClick: true
onClicked: promptOnClick ? cautionDialog.open() : stackView.pop()
}
Dialog {
id: cautionDialog
title: "Caution"
standardButtons: StandardButton.Ok | StandardButton.Cancel
onAccepted: {
if (checkboxDisablePrompt.checked) {
backButton.promptOnClick = false
}
stackView.pop()
}
Row {
CheckBox {
id: checkboxDisablePrompt
checked: false
anchors.verticalCenter: parent.verticalCenter
}
Label {
text: "Do not prompt again"
anchors.verticalCenter: parent.verticalCenter
}
}
}
}

如果我理解正确,您希望对话框中的属性值在应用程序期间保持不变。

一个好的选择是将这些作为属性写入项中。您可以将对话框中的正确属性绑定到刚刚在项中创建的属性。如果要编辑特性,请在项中对其进行编辑。

无论何时创建对话框,它都将使用它绑定的项中属性的当前值。