Settings

Qt自身就提供了基于系统方式的应用程序配置(又名选项,偏好)C++类 QSettings。它使用基于当前操作系统的方式存储配置。此外,它支持通用的INI文件格式用来操作跨平台的配置文件。

在Qt5.2中,配置(Settings)被加入到QML中。编程接口仍然在实验模块中,这意味着接口可能在未来会改变。这里需要注意。

这里有一个小例子,对一个矩形框配置颜色。每次用户点击窗口生成一个新的随机颜色。应用程序关闭后重启你将会看到你最后看到的颜色。
默认的颜色是用来初始化根矩形框的颜色。

  1. import QtQuick 2.0
  2. import Qt.labs.settings 1.0
  3. Rectangle {
  4. id: root
  5. width: 320; height: 240
  6. color: '#000000'
  7. Settings {
  8. id: settings
  9. property alias color: root.color
  10. }
  11. MousArea {
  12. anchors.fill: parent
  13. onClicked: root.color = Qt.hsla(Math.random(), 0.5, 0.5, 1.0);
  14. }
  15. }

每次颜色值的变化都被存储在配置中。这可能不是我们需要的。只有在要求使用标准属性的时候才存储配置。

  1. Rectangle {
  2. id: root
  3. color: settings.color
  4. Settings {
  5. id: settings
  6. property color color: '#000000'
  7. }
  8. function storeSettings() { // executed maybe on destruction
  9. settings.color = root.color
  10. }
  11. }

可以使用category属性存储不同种类的配置。

  1. Settings {
  2. category: 'window'
  3. property alias x: window.x
  4. property alias y: window.x
  5. property alias width: window.width
  6. property alias height: window.height
  7. }

配置同城根据你的应用程序名称,组织和域存储。这些信息通常在你的C++ main函数中设置。

  1. int main(int argc, char** argv) {
  2. ...
  3. QCoreApplication::setApplicationName("Awesome Application");
  4. QCoreApplication::setOrganizationName("Awesome Company");
  5. QCoreApplication::setOrganizationDomain("org.awesome");
  6. ...
  7. }