设置

可以在应用程序中定义设置以仅在运行时使用,也可以将其保存以跨会话使用。 可以读取用户或系统环境变量,在运行时期间设置环境变量或属性,或者将设置保存到文件。

环境变量

可以为用户或系统设置环境变量。 可以在运行应用程序之前设置环境变量,然后将其用于配置替代应用程序行为。 例如,LANG 环境变量设置将影响 Qt 应用程序所使用的区域设置。

要读取应用程序中任何环境变量的值,请使用 AppFramework.environment.value()

要覆盖环境变量的当前设置,请使用 AppFramework.environment.setValue()。 在应用程序运行时,此更改将持续有效。

PropertySet

PropertySet 是一个组件,可用于设置可在 QML 绑定中使用的键值对。 此组件最适用于启动应用程序之前不知道属性值,而是在运行时设置属性值的情况。

有关详细信息,请参阅 PropertySet 的 API 参考

设置文件

设置可以保存在 JSON 文件中,通过 Settings 组件对其进行写入和读取。

该 JSON 文件的位置取决于您的操作系统,以及该应用程序是所创建的独立应用程序还是通过 AppRunAppStudio Player 来使用的。 在大多数情况下,无需直接编辑文件,但是出于漏洞测试目的,可能需要打开这些文件。 如果您需要执行此操作,文件位于以下文件夹,由它们在 ArcGIS Online 中的 UUID 命名:

  • WindowsC:\Users\YourUsername\ArcGIS\AppStudio\Settings
  • macOSUbuntu~\ArcGIS\AppStudio\Settings

构建应用程序后,可能会在四个标准位置之一生成此设置文件,具体取决于应用程序中的组织信息和用户权限。 这些是回退位置,您可以定义应用程序是否将其与 useFallbacks 布尔属性配合使用。

在文件中定义设置值

将以键值对的形式来分配和存储设置,键值对可用于表示您已添加的任何设置。 如果键不存在,则可以根据默认设置或用户的初始设置来创建该键。 请注意,这些键值区分大小写,请始终使用一致的大写形式。

Settings 组件支持四种类型的值,这些值在不同的环境中非常有用。 以下示例显示了值的典型使用方式。

基础 valuesetValue 函数适用于字符串,并且可用于各种场景。 在本例中,以下代码示例提供了一种设置默认路径 URL 的方法:

readonly property string defaultLibraryPath: "~/ArcGIS/Example App/Library"

Item {
    Component.onDestruction: {
        var paths = libraryTextField.text.trim();

        if (paths.length <= 0) {
            paths = defaultLibraryPath;
        }

            settings.setValue("libraryPaths", paths, defaultLibraryPath);
    }

    TextField {
        id: libraryTextField

        Layout.fillWidth: true

        text: defaultLibraryPath
    }
}

boolValue 函数将提供 true 或 false 选择,非常适用于对细微差别要求不多的封闭式问题。 以下代码示例会将设置应用于开关,以确定应用程序是否在多个会话中保持登录状态:

property bool staySignedIn: false

    Switch {
    checked: staySignedIn
    onCheckedChanged: {
        staySignedIn = true;
        settings.boolValue("staySignedIn", true);
    }
}

Settings 组件还提供 numberValue 用于定义整数,适用于粒度设置(例如大小)或者需要在多个不同选项间进行选择的场景,同时还提供 colorValue 用于存储十六进制颜色值,主要用于自定义应用程序的外观。虽然这些函数存储的值类型各异,但其行为方式与 boolValue 相同。