Settings QML Type
プラットフォームに依存しない永続的なアプリケーション設定を提供します。詳細...
Import Statement: | import QtCore |
Since: | Qt 6.5 |
Inherits: |
プロパティ
方法
詳細説明
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 } }
デフォルト値が永続設定プロパティで指定され、永続設定から初期値を取得するために実際のプロパティが設定にバインドされていることに注意してください。
アプリケーション識別子
アプリケーション固有の設定は、アプリケーションname 、organization 、domain を提供するか、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 |
location : url |
このプロパティは、設定ファイルへのパスを保持します。ファイルがまだ存在しない場合は作成されます。
このプロパティが空の場合 (デフォルト)、QSettings::defaultFormat() が使用されます。それ以外の場合は、QSettings::IniFormat が使用される。
QSettings::fileName 、QSettings::defaultFormat 、QSettings::IniFormatも参照して ください。
メソッド・ドキュメント
設定key の値をvalue に設定します。キーが既に存在する場合は、前の値が上書きされます。
value() およびQSettings::setValue も参照して ください。
sync() |
未保存の変更を永続ストレージに書き込み、その間に他のアプリケーションによって変更された設定を再読み込みします。
この関数はQSettings のデストラクタやイベントループから定期的に自動的に呼び出されるため、通常は自分で呼び出す必要はありません。
QSettings::syncも参照してください 。
key の設定値を返します。設定が存在しない場合は、defaultValue を返します。
setValue() およびQSettings::value も参照して ください。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.