Settings QML Type

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

Import Statement: import Qt.labs.settings 1.0
Status: Deprecated since 6.5

この型はQt.labs.settings 6.5から非推奨となりました。新しいコードでは使用しないことを強くお勧めします。

プロパティ

メソッド

  • setValue(string key, var value) (since Qt 5.12)
  • sync()
  • var value(string key, var defaultValue) (since Qt 5.12)

詳細な説明

代わりに Qt Qml Core のSettings を使用してください。

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

注意: この型は、Qt.labs.settingsモジュールをインポートすることで利用可能になります。Qt.labs.settingsモジュールの型は、将来のバージョンでも互換性が保たれる保証はありません。

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

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

import QtQuick.Window
import Qt.labs.settings

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 QtQuick
import Qt.labs.settings

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 を提供するか、fileName を指定することで識別されます。

#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
        // ...
    }
}

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

注意事項

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

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

Settings およびQSettingsも参照して ください。

プロパティ ドキュメント

category : string

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

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


fileName : string [since Qt 5.12]

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

このプロパティは Qt 5.12 で導入されました。

QSettings::fileName およびQSettings::IniFormatも参照して ください。


メソッド ドキュメント

[since Qt 5.12] setValue(string key, var value)

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

このメソッドは Qt 5.12 で導入されました。

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


sync()

保存されていない変更を永久記憶装置に書き込み、その間に他のアプリケーションによって変更された設定を再読み込みします。

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

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


[since Qt 5.12] var value(string key, var defaultValue)

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

このメソッドはQt 5.12で導入されました。

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


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