Settings QML Type
提供持久的独立于平台的应用程序设置。
导入语句: | import Qt.labs.settings 1.0 |
属性
方法
详细说明
Settings 类型提供持久的独立于平台的应用程序设置。
注意:此类型可通过导入Qt.labs.settings模块获得。Qt.labs模块中的类型不能保证在将来的版本中保持兼容。
用户通常希望应用程序在会话之间记住其设置(窗口大小和位置、选项等)。设置类型允许您以最小的工作量保存和还原此类应用程序设置。
通过在Settings元素中声明属性来指定各个设置值。支持所有基本类型属性。推荐的方法是使用属性别名,以便以两种方式获得自动属性更新。下面的示例演示如何使用设置存储和还原窗口的几何图形。
import QtQuick.Window 2.1
import Qt.labs.settings 1.0
Window {
id: window
width: 800
height: 600
Settings {
property alias x: window.x
property alias y: window.y
property alias width: window.width
property alias height: window.height
}
}
第一次启动应用程序时,窗口将获得指定为800x600的默认维度。注意,没有指定默认位置-我们让窗口管理器来处理。稍后,当窗口几何图形更改时,新值将自动存储到永久设置中。第二次运行的应用程序将从持久设置中获取初始值,使窗口返回到以前的位置和大小。
通过使用属性别名实现的完全声明性语法的代价是,每当别名属性的值发生更改时,都会存储持久设置。普通属性可用于获得对存储持久设置的更细粒度控制。下面的示例演示如何保存组件销毁设置。
import QtQuick 2.1
import Qt.labs.settings 1.0
Item {
id: page
state: settings.state
states: [
State {
name: "active"
// ...
},
State {
name: "inactive"
// ...
}
]
Settings {
id: settings
property string state: "active"
}
Component.onDestruction: {
settings.state = page.state
}
}
请注意,现在如何在persistent setting属性中指定默认值,并将实际属性绑定到该设置,以便从persistent settings获取初始值。
应用程序标识符
通过提供应用程序名称、组织和域或指定文件名来标识特定于应用程序的设置。
#include <QGuiApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
app.setOrganizationName("Some Company");
app.setOrganizationDomain("somecompany.com");
app.setApplicationName("Amazing Application");
QQmlApplicationEngine engine("main.qml");
return app.exec();
}
这些通常在C++(在主程序的开头)中指定,但也可以通过以下属性在QML中控制:
类别
通过通过类别属性指定类别名称,可以将应用程序设置划分为逻辑类别。使用逻辑类别不仅可以提供更清晰的设置结构,而且还可以防止设置键之间可能发生的冲突。
如果需要多个类别,请使用多个设置对象,每个对象都有自己的类别:
Item {
id: panel
visible: true
Settings {
category: "OutputPanel"
property alias visible: panel.visible
// ...
}
Settings {
category: "General"
property alias fontSize: fontSizeSpinBox.value
// ...
}
}
与确保应用程序中的所有设置都具有唯一的名称不同,可以将这些设置划分为唯一的类别,然后这些类别可能包含使用其他类别中使用的相同名称的设置,而不会发生冲突。
说明:
当前的实现基于QSettings。这会带来某些限制,例如缺少更改通知。使用一个设置实例写入设置值不会更新另一个设置实例中的值,即使它们引用的是同一类别中的同一设置。
这些信息存储在Windows的系统注册表和macOS的XML首选项文件中。在其他Unix系统上,如果没有标准,则使用INI文本文件。有关更多详细信息,请参见QSettings文档。
另请参见QSettings。
属性文档:
category : string
此属性保留设置类别的名称。
类别可用于将相关设置分组在一起。
fileName : string
此属性保存设置文件的路径。如果文件不存在,则创建该文件。
Qt 5.12引入了这种特性。
另请参见QSettings::fileName和QSettings::IniFormat。
方法文档:
setValue(key, var value)
将“设置关键点”的值设置为“值”。如果密钥已存在,则覆盖上一个值。
Qt 5.12中引入了该方法。
另请参见value()和QSettings::setValue。
sync()
将任何未保存的更改写入永久存储,并重新加载同时由其他应用程序更改的任何设置。
这个函数是由QSettings的析构函数和事件循环定期自动调用的,所以通常不需要自己调用它。
另请参见QSettings::sync。
var value(key, var defaultValue)
返回设置键的值。如果设置不存在,则返回defaultValue。
Qt 5.12中引入了该方法。
另请参见setValue()和QSettings::value。