Settings QML Type:QML 持久的独立于平台的应用程序设置

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(keyvar value)

将“设置关键点”的值设置为“值”。如果密钥已存在,则覆盖上一个值。

Qt 5.12中引入了该方法。

另请参见value()和QSettings::setValue。

 

sync()

将任何未保存的更改写入永久存储,并重新加载同时由其他应用程序更改的任何设置。

这个函数是由QSettings的析构函数和事件循环定期自动调用的,所以通常不需要自己调用它。

另请参见QSettings::sync。

 

var value(keyvar defaultValue)

返回设置键的值。如果设置不存在,则返回defaultValue。

Qt 5.12中引入了该方法。

另请参见setValue()和QSettings::value。

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值