Settings QML Type

プラットフォームに依存しない永続的なアプリケーション設定を提供します。詳細...

Import Statement: import QtCore
Since: Qt 6.5
Inherits:

QtObject

プロパティ

メソッド

詳細説明

Settingsタイプは、プラットフォームに依存しない永続的なアプリケーション設定を提供します。

ユーザは通常、アプリケーションがセッションをまたいでその設定(ウィンドウのサイズや位置、オプションなど)を記憶することを期待します。Settings型を使用すると、そのようなアプリケーション設定を最小限の労力で保存および復元できます。

個々の設定値は、Settings要素内でプロパティを宣言することで指定します。QSettings によって認識される値タイプのみがサポートされています。推奨されるアプローチは、両方の方法でプロパティの自動更新を得るために、プロパティのエイリアスを使用することです。次の例は、Settings を使用してウィンドウのジオメトリを保存および復元する方法を示しています。

import QtCore
import QtQuick

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が指定されます。デフォルトの位置は指定されていないことに注意してください。後でウィンドウのジオメトリが変更されると、新しい値が自動的に永続設定に保存されます。2回目のアプリケーション実行では、永続的な設定から初期値を取得し、ウィンドウを以前の位置とサイズに戻す。

完全に宣言的な構文は、プロパティ・エイリアスを使用することによって実現されますが、エイリアスされたプロパティの値が変更されるたびに永続的な設定を保存するという代償を伴います。通常のプロパティを使用することで、永続的な設定の保存をより細かく制御することができます。次の例は、コンポーネントの破棄時に設定を保存する方法を示しています。

import QtCore
import QtQuick

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
    }
}

デフォルト値が永続設定プロパティで指定され、永続設定から初期値を取得するために実際のプロパティが設定にバインドされていることに注意してください。

アプリケーション識別子

アプリケーション固有の設定は、アプリケーションnameorganizationdomain を提供するか、location を指定することで識別されます。

#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++のmain() の冒頭で指定されますが、QMLでは以下のプロパティで制御することもできます:

カテゴリー

アプリケーションの設定は、category プロパティでカテゴリ名を指定することで、論理的なカテゴリに分けることができます。論理カテゴリを使用すると、設定構造がすっきりするだけでなく、設定キー間の競合の可能性も防ぐことができます。

複数のカテゴリーが必要な場合は、それぞれ独自のカテゴリーを持つ複数のSettingsオブジェクトを使用してください:

Item {
    id: panel

    visible: true

    Settings {
        category: "OutputPanel"
        property alias visible: panel.visible
        // ...
    }

    Settings {
        category: "General"
        property alias fontSize: fontSizeSpinBox.value
        // ...
    }
}

アプリケーション内のすべての設定がユニークな名前を持つようにする代わりに、設定をユニークなカテゴリに分割することができます。

設定のシングルトン

すべてのQMLファイルで設定をシングルトンとして利用できるようにすると便利なことがよくあります。その例として、To Do Listの例をご覧ください。具体的には、AppSettings.qmlがシングルトンで、CMakeLists.txtファイルではset_source_files_properties を介して、QT_QML_SINGLETON_TYPE プロパティがTRUE に設定されています。

注意事項

現在の実装はQSettings に基づいています。このため、変更通知の欠落など、特定の制限があります。Settingsの1つのインスタンスを使用して設定値を書き込んでも、同じカテゴリの同じ設定を参照していても、別のSettingsインスタンスの値は更新されません。

この情報は、Windowsではシステムレジストリに、macOSではXML環境設定ファイルに保存されます。その他のUnixシステムでは、標準がないためINIテキストファイルが使用されます。詳細はQSettings のドキュメントを参照。

QSettingsも参照して ください。

プロパティ ドキュメント

category : string

このプロパティは、設定カテゴリの名前を保持します。

カテゴリは、関連する設定をグループ化するために使用できます。

QSettings::group参照して ください。


location : url

このプロパティは、設定ファイルへのパスを保持します。ファイルがまだ存在しない場合は作成されます。

このプロパティが空の場合 (デフォルト)、QSettings::defaultFormat() が使用されます。それ以外の場合は、QSettings::IniFormat が使用される。

QSettings::fileNameQSettings::defaultFormatQSettings::IniFormatも参照して ください。


メソッド・ドキュメント

setValue(string key, var value)

設定key の値をvalue に設定します。キーが既に存在する場合は、前の値が上書きされます。

value() およびQSettings::setValue参照して ください。


sync()

未保存の変更を永続ストレージに書き込み、その間に別のアプリケーションによって変更された設定を再読み込みします。

この関数はQSettings のデストラクタやイベント・ループから定期的に自動的に呼び出されるため、通常は自分で呼び出す必要はありません。

QSettings::syncも参照してください


var value(string key, var defaultValue)

key の設定値を返します。設定が存在しない場合は、defaultValue を返します。

setValue() およびQSettings::value参照して ください。


©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 ここで提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。