QSettings Class
QSettingsクラスは、プラットフォームに依存しない永続的なアプリケーション設定を提供します。詳細...
ヘッダー | #include <QSettings> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
継承: | QObject |
- 継承メンバを含む全メンバのリスト
- QSettingsは、Input/OutputおよびNetworkingに属しています。
注意: このクラスの関数はすべてリエントラントです。
注意:これらの関数はスレッドセーフでもあります:
- registerFormat(const QString &extension, QSettings::ReadFunc readFunc, QSettings::WriteFunc writeFunc, Qt::CaseSensitivity caseSensitivity)
パブリックな型
enum | Format { NativeFormat, Registry32Format, Registry64Format, IniFormat, WebLocalStorageFormat, …, InvalidFormat } |
ReadFunc | |
enum | Scope { UserScope, SystemScope } |
SettingsMap | |
enum | Status { NoError, AccessError, FormatError } |
WriteFunc |
パブリック関数
QSettings(QObject *parent = nullptr) | |
QSettings(QSettings::Scope scope, QObject *parent = nullptr) | |
QSettings(const QString &fileName, QSettings::Format format, QObject *parent = nullptr) | |
QSettings(const QString &organization, const QString &application = QString(), QObject *parent = nullptr) | |
QSettings(QSettings::Scope scope, const QString &organization, const QString &application = QString(), QObject *parent = nullptr) | |
QSettings(QSettings::Format format, QSettings::Scope scope, const QString &organization, const QString &application = QString(), QObject *parent = nullptr) | |
virtual | ~QSettings() |
QStringList | allKeys() const |
QString | applicationName() const |
void | beginGroup(QAnyStringView prefix) |
int | beginReadArray(QAnyStringView prefix) |
void | beginWriteArray(QAnyStringView prefix, int size = -1) |
QStringList | childGroups() const |
QStringList | childKeys() const |
void | clear() |
bool | contains(QAnyStringView key) const |
void | endArray() |
void | endGroup() |
bool | fallbacksEnabled() const |
QString | fileName() const |
QSettings::Format | format() const |
QString | group() const |
bool | isAtomicSyncRequired() const |
bool | isWritable() const |
QString | organizationName() const |
void | remove(QAnyStringView key) |
QSettings::Scope | scope() const |
void | setArrayIndex(int i) |
void | setAtomicSyncRequired(bool enable) |
void | setFallbacksEnabled(bool b) |
void | setValue(QAnyStringView key, const QVariant &value) |
QSettings::Status | status() const |
void | sync() |
QVariant | value(QAnyStringView key) const |
QVariant | value(QAnyStringView key, const QVariant &defaultValue) const |
静的パブリックメンバ
QSettings::Format | defaultFormat() |
QSettings::Format | registerFormat(const QString &extension, QSettings::ReadFunc readFunc, QSettings::WriteFunc writeFunc, Qt::CaseSensitivity caseSensitivity = Qt::CaseSensitive) |
void | setDefaultFormat(QSettings::Format format) |
void | setPath(QSettings::Format format, QSettings::Scope scope, const QString &path) |
再実装された保護された関数
virtual bool | event(QEvent *event) override |
詳しい説明
ユーザーは通常、アプリケーションがセッションをまたいでその設定(ウィンドウのサイズや位置、オプションなど)を記憶していることを期待している。この情報は、Windowsではシステム・レジストリに、macOSやiOSではプロパティ・リスト・ファイルに保存されることが多い。Unixシステムでは、標準がないため、多くのアプリケーション(KDEアプリケーションを含む)がINIテキストファイルを使っています。
QSettingsはこれらの技術を抽象化したもので、ポータブルな方法でアプリケーションの設定を保存・復元することができます。また、custom storage formats もサポートしています。
QSettingsのAPIはQVariant をベースにしており、QString 、QRect 、QImage のようなほとんどの値ベースの型を最小限の労力で保存することができます。
非永続メモリ・ベースの構造体が必要な場合は、代わりにQMap<QString,QVariant> の使用を検討してください。
基本的な使い方
QSettingsオブジェクトを作成する際には、アプリケーションの名前だけでなく、あなたの会社や組織の名前も渡さなければなりません。例えば、製品名がStar Runnerで、会社名がMySoftの場合、QSettingsオブジェクトは次のように作成します:
QSettings settings("MySoft", "Star Runner");
QSettings オブジェクトは、スタック上またはヒープ上に作成できます(new
を使用)。QSettingsオブジェクトは、スタック上またはヒープ上に作成することができます。
アプリケーションの多くの場所で QSettings を使用する場合、QCoreApplication::setOrganizationName() とQCoreApplication::setApplicationName() を使用して組織名とアプリケーション名を指定し、デフォルトの QSettings コンストラクタを使用するとよいでしょう:
QCoreApplication::setOrganizationName("MySoft"); QCoreApplication::setOrganizationDomain("mysoft.com"); QCoreApplication::setApplicationName("Star Runner"); ... QSettings settings;
(ここでは、組織のインターネット・ドメインも指定しています。インターネット・ドメインが設定されると、macOSとiOSでは組織名の代わりにインターネット・ドメインが使用されます。ドメインが設定されていない場合、組織名から偽のドメインが派生する。詳細は後述のPlatform-Specific Notes を参照)。
QSettingsは設定を保存します。各設定は、設定の名前(キー)を指定するQString 、キーに関連するデータを格納するQVariant 。設定を書き込むには、setValue ()を使用します。例えば
settings.setValue("editor/wrapMargin", 68);
同じキーを持つ設定がすでに存在する場合、既存の値は新しい値で上書きされます。効率化のため、変更はすぐに永久保存されない場合があります。(変更をコミットするには、いつでもsync() を呼び出すことができます)。
設定の値を戻すには、value() を使用します:
int margin = settings.value("editor/wrapMargin").toInt();
指定された名前の設定がない場合、QSettingsはヌルQVariant (整数0に変換可能)を返します。別のデフォルト値を指定するには、value() に 2 番目の引数を渡します:
int margin = settings.value("editor/wrapMargin", 80).toInt();
指定したキーが存在するかどうかを調べるには、contains() を呼び出します。キーに関連付けられた設定を削除するには、remove() を呼び出す。すべてのキーのリストを取得するには、allKeys() を呼び出します。すべてのキーを削除するには、clear() を呼び出します。
QVariantとGUI型
QVariant はQt Core モジュールの一部であるため、Qt GUI の一部であるQColor 、QImage 、QPixmap などのデータ型への変換関数を提供することはできません。言い換えると、toColor()
、toImage()
、toPixmap()
などの関数はQVariant にはありません。
代わりに、QVariant::value() テンプレート関数を使用することができます。例えば
QSettings settings("MySoft", "Star Runner"); QColor color = settings.value("DataPump/bgcolor").value<QColor>();
逆変換(たとえば、QColor からQVariant へ)は、GUI 関連型を含め、QVariant がサポートするすべてのデータ型に対して自動的に行われます:
QSettings settings("MySoft", "Star Runner"); QColor color = palette().background().color(); settings.setValue("DataPump/bgcolor", color);
QDataStream との間でストリーミングを行う演算子を持つ、qRegisterMetaType() を使用して登録されたカスタム型は、QSettings を使用して格納することができます。
セクションとキーの構文
設定キーは任意の Unicode キ ャ ラ ク タ を含む こ と がで き ます。WindowsのレジストリとINIファイルは大文字と小文字を区別しないキーを使用しますが、macOSとiOSのCFPreferences APIは大文字と小文字を区別するキーを使用します。移植性の問題を避けるために、以下の簡単なルールに従ってください:
- 常に同じキーを同じ大文字と小文字で参照する。例えば、コードのある場所でキーを "text fonts "と呼ぶ場合、他の場所では "Text Fonts "と呼ばないこと。
- 大文字小文字を除いて同じキー名は避けてください。例えば、「MainWindow」というキーがある場合、別のキーを「mainwindow」として保存しようとしないでください。
- バックスラッシュ文字はサブキーを区切るために使用されます(下記参照)。バックスラッシュ文字はサブキーを区切るために使用されます(下記を参照)。ウィンドウ上では'˶'はQSettingsによって'/'に変換され、両者は同一になります。
Unixのファイル・パスと同様に、'/'文字をセパレータとして使用して階層キーを作成できます。例えば
settings.setValue("mainwindow/size", win->size()); settings.setValue("mainwindow/fullScreen", win->isFullScreen()); settings.setValue("outputpanel/visible", panel->isVisible());
同じプレフィックスで多くの設定を保存またはリストアしたい場合、beginGroup() を使用してプレフィックスを指定し、最後にendGroup() を呼び出します。同じ例をもう一度示しますが、今度はグループ機構を使用します:
settings.beginGroup("mainwindow"); settings.setValue("size", win->size()); settings.setValue("fullScreen", win->isFullScreen()); settings.endGroup(); settings.beginGroup("outputpanel"); settings.setValue("visible", panel->isVisible()); settings.endGroup();
beginGroup ()を使用してグループを設定すると、ほとんどの関数の動作がそれに伴って変更されます。グループは再帰的に設定できます。
グループに加えて、QSettingsは "array "の概念もサポートしています。詳しくはbeginReadArray() とbeginWriteArray() を参照してください。
フォールバックのメカニズム
組織名MySoft、アプリケーション名Star RunnerでQSettingsオブジェクトを作成したとします。値を検索するとき、最大 4 つの場所が順に検索されます:
- Star Runner アプリケーションのユーザー固有の場所
- MySoft によるすべてのアプリケーションのユーザー固有の場所
- Star Runnerアプリケーションのシステム全体の場所
- MySoftによるすべてのアプリケーションのシステム全体の場所
(Qtがサポートするさまざまなプラットフォームにおけるこれらの場所の情報については、後述のPlatform-Specific Notes を参照してください)。
最初の場所でキーが見つからなかった場合、2番目の場所で検索が行われます。これにより、システム全体または組織全体の設定を保存し、ユーザーごとまたはアプリケーションごとに上書きすることができます。この仕組みをオフにするには、setFallbacksEnabled(false)を呼び出す。
4つすべての場所のキーは読み取り可能であるが、書き込み可能なのは最初のファイル (そのアプリケーションのユーザー固有の場所)のみである。他のファイルに書き込むには、アプリケーション名を省略するか、QSettings::SystemScope を指定する(デフォルトのQSettings::UserScope とは異なる)。
例で見てみよう:
QSettings obj1("MySoft", "Star Runner"); QSettings obj2("MySoft"); QSettings obj3(QSettings::SystemScope, "MySoft", "Star Runner"); QSettings obj4(QSettings::SystemScope, "MySoft");
下の表は、どのQSettingsオブジェクトがどの場所にアクセスできるかをまとめたものです。"X"は、その場所がQSettingsオブジェクトに関連付けられたメインの場所であり、読み込みと書き込みの両方に使用されることを意味します。"o "は、その場所が読み込み時のフォールバックとして使用されることを意味します。
ロケーション | obj1 | obj2 | obj3 | obj4 |
---|---|---|---|---|
1.ユーザー、アプリケーション | X | |||
2.ユーザー、組織 | o | X | ||
3.システム、アプリケーション | o | X | ||
4.システム、組織 | o | o | o | X |
この仕組みの優れている点は、Qt がサポートするすべてのプラットフォームで動作することと、ファイル名やレジストリパスを指定する必要がなく、柔軟性が高いことです。
ネイティブAPIの代わりにINIファイルを全プラットフォームで使いたい場合は、QSettingsコンストラクタの第一引数にQSettings::IniFormat 、その後にスコープ、組織名、アプリケーション名を渡します:
INIファイルでは数値データとそれをエンコードするための文字列の区別がなくなるため、数値として書かれた値はQString として読み返されることに注意してください。数値は、QString::toInt ()、QString::toDouble ()および関連する関数を使用して復元できる。
GUIアプリケーションの状態の復元
QSettingsは、GUIアプリケーションの状態を保存するためによく使用されます。次の例では、QSettingsを使用してアプリケーションのメイン・ウィンドウのジオメトリを保存および復元する方法を説明します。
void MainWindow::writeSettings() { QSettings settings("Moose Soft", "Clipper"); settings.beginGroup("MainWindow"); settings.setValue("geometry", saveGeometry()); settings.endGroup(); } void MainWindow::readSettings() { QSettings settings("Moose Soft", "Clipper"); settings.beginGroup("MainWindow"); const auto geometry = settings.value("geometry", QByteArray()).toByteArray(); if (geometry.isEmpty()) setGeometry(200, 200, 400, 400); else restoreGeometry(geometry) settings.endGroup(); }
ウィンドウのジオメトリを復元するには、QWidget::setGeometry ()ではなく、QWidget::resize ()とQWidget::move ()を呼び出す方がよい理由については、ウィンドウのジオメトリを参照してください。
readSettings()
とwriteSettings()
関数は、メイン・ウィンドウのコンストラクタと close イベント・ハンドラから次のように呼び出す必要があります:
MainWindow::MainWindow() { ... readSettings(); } void MainWindow::closeEvent(QCloseEvent *event) { if (userReallyWantsToQuit()) { writeSettings(); event->accept(); } else { event->ignore(); } }
複数のスレッドまたはプロセスから同時に設定にアクセスする
QSettingsはリエントラントです。つまり、異なるスレッドで別々のQSettingsオブジェクトを同時に使用することができます。この保証は、QSettingsオブジェクトがディスク上の同じファイル(またはシステムレジストリの同じエントリ)を参照している場合でも有効です。あるQSettingsオブジェクトで設定が変更された場合、その変更は同じ場所で動作し、同じプロセスで動作する他のQSettingsオブジェクトでも即座に確認できます。
QSettingsは、特定の条件が満たされていれば、異なるプロセス(同時に実行されているアプリケーションの異なるインスタンスでも、まったく異なるアプリケーションでもかまいません)から同じシステム・ロケーションを読み書きするために安全に使用することができます。QSettings::IniFormat では、データの整合性を確保するために、アドバイザリー・ファイル・ロッキングとスマート・マージ・アルゴリズムを使用している。これが機能するための条件は、書き込み可能なコンフィギュレーション・ファイルが通常のファイルでなければならず、現在のユーザーが新しい一時ファイルを作成できるディレクトリに存在しなければならないということである。そうでない場合は、setAtomicSyncRequired ()を使用して安全性をオフにしなければならない。
sync() は、(このQSettingsからの変更の書き込みに加えて)他のプロセスによって行われた変更をインポートすることに注意してください。
プラットフォーム固有の注意事項
アプリケーション設定が保存される場所
Fallback Mechanism のセクションで述べたように、QSettings はアプリケーションの設定を、設定がユーザー固有かシステム全体か、設定がアプリケーション固有か組織全体かによって、最大4つの場所に保存します。ここでは簡単のため、組織をMySoftと呼び、アプリケーションをStar Runnerと呼びます。
Unixシステムでは、ファイル形式がNativeFormat の場合、デフォルトで以下のファイルが使用されます:
$HOME/.config/MySoft/Star Runner.conf
$HOME/.config/MySoft.conf
- XDG_CONFIG_DIRS 内の各ディレクトリ <dir> に対して:
<dir>/MySoft/Star Runner.conf
- XDG_CONFIG_DIRS 内の各ディレクトリ <dir> に対して:
<dir>/MySoft.conf
注: XDG_CONFIG_DIRS が設定されていない場合、デフォルト値の/etc/xdg
が使用されます。
macOS および iOS では、ファイル形式がNativeFormat の場合、これらのファイルがデフォルトで使用されます:
$HOME/Library/Preferences/com.MySoft.Star Runner.plist
$HOME/Library/Preferences/com.MySoft.plist
/Library/Preferences/com.MySoft.Star Runner.plist
/Library/Preferences/com.MySoft.plist
Windowsでは、NativeFormat の設定は以下のレジストリ・パスに保存されます:
HKEY_CURRENT_USER\Software\MySoft\Star Runner
HKEY_CURRENT_USER\Software\MySoft\OrganizationDefaults
HKEY_LOCAL_MACHINE\Software\MySoft\Star Runner
HKEY_LOCAL_MACHINE\Software\MySoft\OrganizationDefaults
注: Windowsでは、WOW64モードで動作する32ビット・プログラムの場合、設定は次のレジストリ・パスに格納されます:HKEY_LOCAL_MACHINE\Software\WOW6432node
。
ファイル形式がNativeFormat の場合、アプリケーションのホームディレクトリの「Settings/MySoft/Star Runner.conf」になります。
ファイル形式がIniFormat の場合、Unix、macOS、iOSでは以下のファイルが使用されます:
$HOME/.config/MySoft/Star Runner.ini
$HOME/.config/MySoft.ini
- XDG_CONFIG_DIRS 内の各ディレクトリ <dir> に対して:
<dir>/MySoft/Star Runner.ini
- XDG_CONFIG_DIRS 内の各ディレクトリ <dir> に対して::
<dir>/MySoft.ini
メモ: XDG_CONFIG_DIRS が設定されていない場合、デフォルト値の/etc/xdg
が使用されます。
Windows では、次のファイルが使用されます:
FOLDERID_RoamingAppData\MySoft\Star Runner.ini
FOLDERID_RoamingAppData\MySoft.ini
FOLDERID_ProgramData\MySoft\Star Runner.ini
FOLDERID_ProgramData\MySoft.ini
FOLDERID_
を先頭に持つ識別子は、対応するパスを取得するために Win32 API 関数SHGetKnownFolderPath()
に渡される特別なアイテム ID リストです。
FOLDERID_RoamingAppData
通常 C:\Users\User Name\AppData\Roaming
環境変数%APPDATA%
でも示される。
FOLDERID_ProgramData
通常は を指す。C:\ProgramData
ファイル形式がIniFormat の場合、アプリケーションのホームディレクトリにある "Settings/MySoft/Star Runner.ini "になります。
.ini
と.conf
ファイルのパスは、setPath() を使用して変更できます。Unix、macOS、iOSでは、環境変数XDG_CONFIG_HOME
を設定することで、これらのパスを上書きすることができます。詳細はsetPath() を参照してください。
INIファイルと.plistファイルへの直接アクセス
特定のファイルやレジストリのパスに保存されている設定にアクセスしたい場合があります。すべてのプラットフォームで、INIファイルを直接読み込みたい場合、QSettingsコンストラクタを使用することができます。このコンストラクタは第1引数にファイル名を取り、第2引数にQSettings::IniFormat 。例えば
QSettingsオブジェクトを使用して、ファイル内の設定を読み書きできます。
.plist
macOSとiOSでは、第2引数にQSettings::NativeFormat 。例えば
Windowsレジストリへの直接アクセス
Windowsでは、QSettingsを使用することで、システムレジストリにあるQSettings(または文字列データなど、サポートされている形式の設定)で書き込まれた設定にアクセスすることができます。これは、レジストリ内のパスを指定してQSettingsオブジェクトを作成し、QSettings::NativeFormat 。
例えば、以下のようになります:
指定されたパスの下に表示されるすべてのレジストリエントリは、QSettingsオブジェクトを通して通常通り読み書きできます(バックスラッシュの代わりにフォワードスラッシュを使用します)。例えば、以下のようになります:
settings.setValue("11.0/Outlook/Security/DontTrustInstalledFiles", 0);
バックスラッシュ文字は、前述のように、QSettingsがサブキーを区切るために使用することに注意してください。そのため、スラッシュやバックスラッシュを含むWindowsレジストリエントリを読み書きすることはできません。
Windowsの共通レジストリ設定へのアクセス
Windows では、 キーが値 と サブキー の両方を持つ こ と がで き る 。デフォルト値へのアクセスは、サブキーの代わりに "Default "または". "を使う:
settings.setValue("HKEY_CURRENT_USER\\MySoft\\Star Runner\\Galaxy", "Milkyway"); settings.setValue("HKEY_CURRENT_USER\\MySoft\\Star Runner\\Galaxy\\Sun", "OurStar"); settings.value("HKEY_CURRENT_USER\\MySoft\\Star Runner\\Galaxy\\Default"); // returns "Milkyway"
Windows以外のプラットフォームでは、"Default "や". "は通常のサブキーとして扱われる。
プラットフォームの制限
QSettingsはサポートされるプラットフォーム間の違いをスムーズにしようと試みますが、アプリケーションを移植する際に注意しなければならない違いがまだいくつかあります:
- Windowsのシステムレジストリには以下の制限があります:サブキーは255文字以内、エントリーの値は16,383文字以内、キーのすべての値は65,535文字以内です。これらの制限を回避する1つの方法は、NativeFormat の代わりにIniFormat を使用して設定を保存することである。
- Windowsでは、Windowsシステム・レジストリを使用する場合、QSettingsは値の元の型を保持しません。そのため、新しい値が設定されると、値の型が変更される可能性があります。例えば、
REG_EXPAND_SZ
の型の値は、REG_SZ
に変更されます。 - macOSとiOSでは、allKeys ()は、すべてのアプリケーションに適用されるグローバル設定のためのいくつかの追加キーを返します。これらのキーはvalue() を使用して読み取ることができますが、変更することはできません。setFallbacksEnabled (false)を呼び出すと、これらのグローバル設定が非表示になる。
- macOSとiOSでは、QSettingsが使用するCFPreferences APIは、組織名ではなくインターネットドメイン名を想定しています。統一されたAPIを提供するため、QSettingsは組織名から偽のドメイン名を導出します(OpenOffice.orgなど、組織名がすでにドメイン名である場合を除く)。このアルゴリズムは会社名に".com "を付加し、スペースやその他の不正な文字をハイフンに置き換えます。異なるドメイン名を指定したい場合は、
main()
関数の中でQCoreApplication::setOrganizationDomain(),QCoreApplication::setOrganizationName(),QCoreApplication::setApplicationName() を呼び出し、デフォルトの QSettings コンストラクタを使用してください。もう1つの解決策は、プリプロセッサ・ディレクティブを使用することです: - macOSでは、10.7(Lion)で、現在のユーザーに属さない設定(つまり、SystemScope )にアクセスする権限が変更されました。それ以前のバージョンでは、管理者権限を持つユーザーはこれらにアクセスできました。10.7と10.8(Mountain Lion)では、rootだけがアクセスできます。しかし、10.9(Mavericks)では、このルールが再び変更されましたが、ネイティブフォーマット(plistファイル)のみです。
QVariant およびQSessionManagerも参照してください 。
メンバータイプのドキュメント
enum QSettings::Format
この列挙型は、QSettings で使用される保存形式を指定します。
定数 | 値 | 説明 |
---|---|---|
QSettings::NativeFormat | 0 | プラットフォームに最も適した保存形式を使用して設定を保存する。Windows ではシステムレジストリ、macOS と iOS では CFPreferences API、Unix では INI 形式のテキストファイルです。 |
QSettings::Registry32Format | 2 | Windowsのみ:64ビットWindows上で動作する64ビットアプリケーションから、32ビットシステムレジストリに明示的にアクセスする。32ビットWindowsまたは64ビットWindows上の32ビットアプリケーションから、NativeFormatを指定するのと同じ動作をします。この列挙値は Qt 5.7 で追加されました。 |
QSettings::Registry64Format | 3 | Windows のみ:Windows のみ: 64 ビット Windows 上で動作する 32 ビットアプリケーションから 64 ビットシステムレジストリに明示的にアクセスします。32 ビット Windows または 64 ビット Windows 上の 64 ビットアプリケーションから、NativeFormat を指定するのと同じように動作します。この列挙値は Qt 5.7 で追加されました。 |
QSettings::IniFormat | 1 | 設定を INI ファイルに保存します。INI ファイルは、数値データとそれをエンコードするために使用される文字列の区別を失いますので、数値として書き込まれた値はQString として読み返されることに注意してください。 |
QSettings::WebLocalStorageFormat | 4 | WASMのみ:現在のオリジンのwindow.localStorageに設定を保存します。クッキーが許可されていない場合、INIフォーマットに戻ります。これはオリジンごとに最大5MBのストレージを提供しますが、アクセスは同期的であり、JSPIは必要ありません。 |
QSettings::WebIndexedDBFormat | 5 | WASMのみ:現在のオリジンのインデックス付きDBに設定を保存します。クッキーが許可されていない場合は、INI形式に戻ります。これは JSPI を必要としますが、WebLocalStorageFormat よりも多くのストレージを提供します。 |
QSettings::InvalidFormat | 16 | registerFormat() が返す特別な値。 |
Unixでは、NativeFormatとIniFormatはファイル拡張子が異なる以外は同じ意味です(NativeFormatは.conf
、IniFormatは.ini
)。
INIファイルフォーマットはWindowsのファイルフォーマットで、Qtはすべてのプラットフォームでサポートしています。INIの標準がない場合、以下の例外を除いて、Microsoftが行っていることに従うようにしています:
- QVariant がQString に変換できない型(例えば、QPoint 、QRect 、QSize )を保存する場合、Qt は
@
に基づいた構文を使用して型をエンコードします。例えばpos = @Point(100 100)
互換性の問題を最小限にするために、値の最初の位置に現れない、または Qt の型 (
Point
,Rect
,Size
など) が続かない@
は、通常の文字として扱われます。 - バックスラッシュはINIファイルでは特殊文字ですが、ほとんどのWindowsアプリケーションはファイルパスでバックスラッシュ(
\
)をエスケープしません:windir = C:\Windows
QSettings バックスラッシュは常に特殊文字として扱われ、そのようなエントリーを読み書きするためのAPIは提供されない。
- INIファイルフォーマットはキーの構文に厳しい制限があります。Qtは、
%
をキーのエスケープ文字として使用することで、これを回避しています。さらに、トップレベルの設定(スラッシュの入っていないキー、例えば "someKey")を保存すると、INIファイルの "General "セクションに表示されます。他のキーの上書きを避けるため、"General/someKey "のようなキーを使用して何かを保存すると、そのキーは "General "セクションではなく、"%General "セクションに配置されます。 - 現在のほとんどの実装と同様に、QSettings 、INIファイル内の値はutf-8エンコードされていると仮定されます。これは、値がutf-8エンコードされた項目としてデコードされ、utf-8として書き戻されることを意味します。古い Qt バージョンとの互換性を保つために、INI ファイルのキーは%-encoded フォーマットで書き込まれますが、%-encoded フォーマットと utf-8 フォーマットの両方で読み込むことができます。
古い Qt バージョンとの互換性
この動作は、Qt 6 より前のバージョンでのQSettings の動作とは異なることに注意してください。ただし、Qt 5以前で書かれたINIファイルは、Qt 6ベースのアプリケーションで完全に読むことができます(utf8と異なるiniコーデックが設定されていない限り)。しかし、Qt 6で書かれたINIファイルは、"iniCodec "をutf-8 textcodecに設定した場合のみ、古いバージョンのQtでも読むことができます。
registerFormat() とsetPath()も参照してください 。
QSettings::ReadFunc
次のシグネチャを持つ関数へのポインタのための型定義です:
ReadFunc
は、 で、キーと値のペアのセットを読み込む関数へのポインタとして使用されます。 は、1回のパスですべてのオプションを読み込み、初期状態では空の コンテナにすべての設定を返す必要があります。registerFormat()
ReadFunc
SettingsMap
WriteFunc およびregisterFormat()も参照 。
enum QSettings::Scope
この列挙型は、設定がユーザー固有なのか、同じシステムのすべてのユーザーによって共有されるのかを指定します。
定数 | 値 | 説明 |
---|---|---|
QSettings::UserScope | 0 | 現在のユーザに固有の場所(例えば、ユーザのホーム・ディレクトリ)に設定を格納します。 |
QSettings::SystemScope | 1 | 同じマシン上のすべてのユーザが同じ設定セットにアクセスできるように、グローバルな場所に設定を保存します。 |
setPath()も参照してください 。
QSettings::SettingsMap
registerFormat()も参照のこと 。
enum QSettings::Status
以下のステータス値が可能である:
定数 | 値 | 説明 |
---|---|---|
QSettings::NoError | 0 | エラーは発生しませんでした。 |
QSettings::AccessError | 1 | アクセスエラーが発生した(読み取り専用ファイルに書き込もうとしたなど)。 |
QSettings::FormatError | 2 | フォーマット・エラーが発生しました (不正な INI ファイルの読み込みなど)。 |
status()も参照してください 。
QSettings::WriteFunc
次のシグネチャを持つ関数へのポインタのための型定義:
WriteFunc
は、 で、キーと値のペアのセットを書き込む関数へのポインタとして使用される。 は一度だけ呼び出されるので、設定を一度に出力する必要がある。registerFormat()
WriteFunc
ReadFunc およびregisterFormat()も参照の こと。
メンバー関数ドキュメント
QVariant QSettings::value(QAnyStringView key) const
QVariant QSettings::value(QAnyStringView key, const QVariant &defaultValue) const
key の設定値を返す。設定が存在しない場合は、defaultValue を返します。
デフォルト値が指定されていない場合は、デフォルトのQVariant が返される。
Windows のレジストリと INI ファイルは大文字小文字を区別しないキーを使用しますが、macOS と iOS の CFPreferences API は大文字小文字を区別するキーを使用することに注意してください。移植性の問題を避けるために、Section and Key Syntax のルールを参照してください。
例
QSettings settings; settings.setValue("animal/snake", 58); settings.value("animal/snake", 1024).toInt(); // returns 58 settings.value("animal/zebra", 1024).toInt(); // returns 1024 settings.value("animal/zebra").toInt(); // returns 0
注意: Qt 6.4 より前のバージョンでは、この関数はQAnyStringView ではなくQString を取っていました。
setValue(),contains(),remove()も参照してください 。
[explicit]
QSettings::QSettings(QObject *parent = nullptr)
QCoreApplication::setOrganizationName()、QCoreApplication::setOrganizationDomain()、QCoreApplication::setApplicationName()の呼び出しで以前に設定されたアプリケーションと組織の設定にアクセスするためのQSettingsオブジェクトを構築します。
スコープはQSettings::UserScope で、フォーマットはdefaultFormat() ( デフォルトはQSettings::NativeFormat ) です。このコンストラクタが使用するデフォルトの書式を変更するには、このコンストラクタを呼び出す前にsetDefaultFormat() を使用します。
コード
QSettings settings("Moose Soft", "Facturo-Pro");
と同じです。
QCoreApplication::setOrganizationName("Moose Soft"); QCoreApplication::setApplicationName("Facturo-Pro"); QSettings settings;
QCoreApplication::setOrganizationName() およびQCoreApplication::setApplicationName() が以前に呼び出されていない場合、QSettings オブジェクトは設定を読み取ったり書き込んだりすることができず、status() はAccessError を返します。
ドメイン(macOSとiOSでデフォルトで使用される)と名前(他の場所でデフォルトで使用される)の両方を指定する必要がありますが、片方だけを指定してもコードは対応します。
QCoreApplication::setOrganizationName()、QCoreApplication::setOrganizationDomain()、QCoreApplication::setApplicationName()、setDefaultFormat()も参照の こと。
[explicit]
QSettings::QSettings(QSettings::Scope scope, QObject *parent = nullptr)
QSettings(QObject *parent) と同じ方法で QSettings オブジェクトを構築しますが、与えられたscope を使用します。
QSettings(QObject *parent)も参照してください 。
QSettings::QSettings(const QString &fileName, QSettings::Format format, QObject *parent = nullptr)
parent を親として、fileName というファイルに保存されている設定にアクセスするための QSettings オブジェクトを構築します。ファイルがまだ存在しない場合は作成されます。
format がQSettings::NativeFormat の場合、fileName の意味はプラットフォームによって異なります。Unixでは、fileName はINIファイルの名前です。macOSとiOSでは、fileName は.plist
ファイルの名前です。Windowsでは、fileName はシステム・レジストリ内のパスである。
format がQSettings::IniFormat の場合、fileName はINIファイルの名前である。
警告: この関数は便宜上提供されている。Qtによって生成されたINIファイルや.plist
ファイルにアクセスする場合にはうまく機能しますが、他のプログラムによって生成されたINIファイルや ファイルに見られる構文によっては失敗することがあります。特に、以下の制限に注意してください:
- QSettingsはINIの "path "エントリ、つまりエスケープされていないスラッシュ文字を含むエントリを読む方法を提供しません。QSettings は INI の "パス" エントリ、つまりエスケープされていないスラッシュ文字を含むエントリを読み取る方法を提供しません (これはこれらのエントリが曖昧で、自動的に解決できないためです)。
- INI ファイルでは、QSettings は
@
文字をメタ文字として使用し、Qt 固有のデータ型 (@Rect
など) をエンコードしています。
fileName()も参照してください 。
[explicit]
QSettings::QSettings(const QString &organization, const QString &application = QString(), QObject *parent = nullptr)
organization parent という組織から というアプリケーションの設定にアクセスするための QSettings オブジェクトを構築します。application
例
QSettings settings("Moose Tech", "Facturo-Pro");
例:スコープはQSettings::UserScope に設定され、フォーマットはQSettings::NativeFormat に設定されます(つまり、このコンストラクタを呼び出す前にsetDefaultFormat() を呼び出しても効果はありません)。
setDefaultFormat() およびFallback Mechanismも参照 。
QSettings::QSettings(QSettings::Scope scope, const QString &organization, const QString &application = QString(), QObject *parent = nullptr)
organization という組織からapplication というアプリケーションの設定にアクセスするための QSettings オブジェクトを構築し、親はparent です。
scope がQSettings::UserScope の場合、QSettings オブジェクトは、フォールバックとしてシステム全体の設定を検索する前に、まずユーザー固有の設定を検索します。scope がQSettings::SystemScope の場合、QSettings オブジェクトはユーザー固有の設定を無視し、システム全体の設定にアクセスします。
保存形式はQSettings::NativeFormat に設定されます(つまり、このコンストラクタを呼び出す前にsetDefaultFormat() を呼び出しても効果はありません)。
アプリケーション名が与えられていない場合、QSettings オブジェクトは組織全体のlocations にのみアクセスします。
setDefaultFormat()も参照してください 。
QSettings::QSettings(QSettings::Format format, QSettings::Scope scope, const QString &organization, const QString &application = QString(), QObject *parent = nullptr)
organization という組織からapplication というアプリケーションの設定にアクセスするための QSettings オブジェクトを構築し、親はparent です。
scope がQSettings::UserScope の場合、QSettings オブジェクトは、フォールバックとしてシステム全体の設定を検索する前に、まずユーザー固有の設定を検索します。scope がQSettings::SystemScope の場合、QSettings オブジェクトはユーザー固有の設定を無視し、システム全体の設定にアクセスします。
format がQSettings::NativeFormat の場合、設定の保存にはネイティブ API が使用されます。format がQSettings::IniFormat の場合、INI フォーマットが使用されます。
アプリケーション名が指定されていない場合、QSettings オブジェクトは組織全体のlocations にのみアクセスします。
[virtual noexcept]
QSettings::~QSettings()
QSettings オブジェクトを破棄する。
保存されていない変更は、最終的に永久記憶装置に書き込まれます。
sync()も参照のこと 。
QStringList QSettings::allKeys() const
QSettings オブジェクトを使用して読み込める、サブキーを含むすべてのキーのリストを返します。
例:
QSettings settings; settings.setValue("fridge/color", QColor(Qt::white)); settings.setValue("fridge/size", QSize(32, 96)); settings.setValue("sofa", true); settings.setValue("tv", false); QStringList keys = settings.allKeys(); // keys: ["fridge/color", "fridge/size", "sofa", "tv"]
例:beginGroup() を使用してグループを設定した場合、グループ内のキーのみが返され、 グループ接頭辞は含まれない:
settings.beginGroup("fridge"); keys = settings.allKeys(); // keys: ["color", "size"]
childGroups() およびchildKeys()も参照 。
QString QSettings::applicationName() const
設定の保存に使用したアプリケーション名を返します。
QCoreApplication::applicationName(),format(),scope(),organizationName()も参照 。
void QSettings::beginGroup(QAnyStringView prefix)
prefix を現在のグループに追加する。
現在のグループは、QSettings に指定されたすべてのキーの前に自動的に付加される。 また、childGroups ()、childKeys ()、allKeys ()などのクエリ関数は、グループに基づいている。デフォルトでは、グループは設定されていない。
グループは、同じ設定パスを何度も入力するのを避けるのに便利です。例えば
settings.beginGroup("mainwindow"); settings.setValue("size", win->size()); settings.setValue("fullScreen", win->isFullScreen()); settings.endGroup(); settings.beginGroup("outputpanel"); settings.setValue("visible", panel->isVisible()); settings.endGroup();
これにより、3つの設定値が設定されます:
mainwindow/size
mainwindow/fullScreen
outputpanel/visible
endGroup ()を呼び出して、現在のグループを、対応するbeginGroup()を呼び出す前の状態にリセットする。グループは入れ子にすることができます。
注意: Qt 6.4 より前のバージョンでは、この関数はQAnyStringView ではなくQString を呼び出します。
endGroup() およびgroup()も参照してください 。
int QSettings::beginReadArray(QAnyStringView prefix)
prefix を現在のグループに追加し、配列から読み込みを開始する。配列のサイズを返す。
例
struct Login { QString userName; QString password; }; QList<Login> logins; ... QSettings settings; int size = settings.beginReadArray("logins"); for (int i = 0; i < size; ++i) { settings.setArrayIndex(i); Login login; login.userName = settings.value("userName").toString(); login.password = settings.value("password").toString(); logins.append(login); } settings.endArray();
例: 最初に配列を書き込むにはbeginWriteArray() を使用します。
注意: Qt 6.4 より前のバージョンでは、この関数はQAnyStringView ではなくQString を取っていました。
beginWriteArray(),endArray(),setArrayIndex()も参照してください 。
void QSettings::beginWriteArray(QAnyStringView prefix, int size = -1)
prefix を現在のグループに追加し、サイズsize の配列の書き込みを開始する。size が-1(デフォルト)の場合、書き込まれたエントリーのインデックスに基づいて自動的に決定される。
あるキーのセットがたくさん出現する場合、配列を使用すると楽になります。例えば、ユーザー名とパスワードの可変長リストを保存したいとしよう。こう書くことができる:
struct Login { QString userName; QString password; }; QList<Login> logins; ... QSettings settings; settings.beginWriteArray("logins"); for (qsizetype i = 0; i < logins.size(); ++i) { settings.setArrayIndex(i); settings.setValue("userName", logins.at(i).userName); settings.setValue("password", logins.at(i).password); } settings.endArray();
生成される鍵は次のような形式になる。
logins/size
logins/1/userName
logins/1/password
logins/2/userName
logins/2/password
logins/3/userName
logins/3/password
- ...
配列を読み出すには、beginReadArray()を使います。
注意: Qt 6.4より前のバージョンでは、この関数はQAnyStringView ではなくQString を取っていました。
beginReadArray(),endArray(),setArrayIndex()も参照してください 。
QStringList QSettings::childGroups() const
QSettings オブジェクトを使用して読み込めるキーを含む、すべてのキーのトップレベルグループのリストを返します。
例
QSettings settings; settings.setValue("fridge/color", QColor(Qt::white)); settings.setValue("fridge/size", QSize(32, 96)); settings.setValue("sofa", true); settings.setValue("tv", false); QStringList groups = settings.childGroups(); // groups: ["fridge"]
beginGroup() を使用してグループを設定した場合は、そのグループの第 1 レベルのキーが返され、 グループ・プレフィックスは含まれません。
settings.beginGroup("fridge"); groups = settings.childGroups(); // groups: []
childKeys() および childGroups() を使用して、設定階層全体を再帰的に移動できます。
childKeys() およびallKeys()も参照して ください。
QStringList QSettings::childKeys() const
QSettings オブジェクトを使用して読み込むことができるすべてのトップレベルキーのリストを返します。
例:
QSettings settings; settings.setValue("fridge/color", QColor(Qt::white)); settings.setValue("fridge/size", QSize(32, 96)); settings.setValue("sofa", true); settings.setValue("tv", false); QStringList keys = settings.childKeys(); // keys: ["sofa", "tv"]
例:beginGroup() を使用してグループを設定すると、そのグループの最上位レベルのキーが、 グループ・プレフィックスを除いて返されます:
settings.beginGroup("fridge"); keys = settings.childKeys(); // keys: ["color", "size"]
childKeys() およびchildGroups() を再帰的に使用して、設定階層全体をナビゲートできます。
childGroups() およびallKeys()も参照して ください。
void QSettings::clear()
このQSettings オブジェクトに関連付けられたプライマリロケーションのすべてのエントリを削除する。
フォールバック・ロケーションのエントリは削除されません。
現在のgroup() のエントリだけを削除したい場合は、代わりに remove("") を使用します。
remove() およびsetFallbacksEnabled()も参照 。
bool QSettings::contains(QAnyStringView key) const
key という設定があればtrue
を返し、なければ false を返す。
beginGroup() を使用してグループが設定されている場合、key はそのグループからの相対キーとみなされる。
Windows のレジストリと INI ファイルは大文字小文字を区別しないキーを使用しますが、macOS と iOS の CFPreferences API は大文字小文字を区別するキーを使用することに注意してください。移植性の問題を避けるために、Section and Key Syntax のルールを参照してください。
注意: Qt 6.4 より前のバージョンでは、この関数はQAnyStringView ではなくQString を取っていました。
value() およびsetValue()も参照してください 。
[static]
QSettings::Format QSettings::defaultFormat()
QSettings(QObject *) コンストラクタの設定の保存に使用されるデフォルトのファイル・フォーマットを返します。デフォルトフォーマットが設定されていない場合は、QSettings::NativeFormat が使用されます。
setDefaultFormat() およびformat()も参照 。
void QSettings::endArray()
beginReadArray() またはbeginWriteArray() を使用して開始された配列を閉じる。
beginReadArray() およびbeginWriteArray()も参照 。
void QSettings::endGroup()
グループを、対応するbeginGroup() をコールする前の状態にリセットする。
例:
settings.beginGroup("alpha"); // settings.group() == "alpha" settings.beginGroup("beta"); // settings.group() == "alpha/beta" settings.endGroup(); // settings.group() == "alpha" settings.endGroup(); // settings.group() == ""
beginGroup() およびgroup()も参照 。
[override virtual protected]
bool QSettings::event(QEvent *event)
再インプリメント:QObject::event(QEvent *e).
bool QSettings::fallbacksEnabled() const
フォールバックが有効な場合はtrue
を返し、そうでない場合はfalse
を返す。
デフォルトでは、フォールバックは有効である。
setFallbacksEnabled()も参照のこと 。
QString QSettings::fileName() const
このQSettings オブジェクトを使用して書き込まれた設定が保存されているパスを返します。
Windows では、フォーマットがQSettings::NativeFormat の場合、返り値はファイル・パスではなくシステム・レジストリ・パスになります。
isWritable() およびformat()も参照してください 。
QSettings::Format QSettings::format() const
設定の保存に使用したフォーマットを返す。
defaultFormat()、fileName()、scope()、organizationName()、applicationName()も参照 。
QString QSettings::group() const
現在のグループを返します。
beginGroup() およびendGroup()も参照 。
bool QSettings::isAtomicSyncRequired() const
QSettings が設定のアトミックな保存と再読み込み(同期)のみを許可されている場合、true
を返します。設定内容を設定ファイルに直接保存することが許可されている場合は、false
を返します。
デフォルトはtrue
です。
setAtomicSyncRequired() およびQSaveFileも参照してください 。
bool QSettings::isWritable() const
このQSettings オブジェクトを使用して設定を書き込むことができる場合はtrue
を返し、そうでない場合はfalse
を返す。
isWritable()がfalseを返す可能性がある理由の1つは、QSettings 、読み取り専用のファイルを操作している場合です。
警告: なぜなら、ファイルのパーミッションはいつでも変更できるからである。
fileName()、status()、sync()も参照の こと。
QString QSettings::organizationName() const
設定を保存するために使用される組織名を返します。
QCoreApplication::organizationName(),format(),scope(),applicationName()も参照 。
[static]
QSettings::Format QSettings::registerFormat(const QString &extension, QSettings::ReadFunc readFunc, QSettings::WriteFunc writeFunc, Qt::CaseSensitivity caseSensitivity = Qt::CaseSensitive)
カスタム・ストレージ・フォーマットを登録します。成功すると、QSettings コンストラクタに渡すことができる特別な Format 値を返します。失敗した場合はInvalidFormat を返します。
extension は、そのフォーマットに関連付けられたファイル拡張子である('.'は含まない)。
readFunc とwriteFunc のパラメータは、キーと値のペアを読み書きする関数へのポインタです。読み書き関数へのQIODevice パラメータは、常にバイナリモードで開かれる(つまり、QIODeviceBase::Text フラグなし)。
caseSensitivity パラメータは、キーの大文字と小文字を区別するかどうかを指定する。これは、QSettings を使用して値を検索する場合に違いが生じる。デフォルトは大文字小文字を区別する。
デフォルトでは、組織名とアプリケーション名で動作するコンストラクタの 1 つを使用する場合、使用されるファイルシステムの場所はIniFormat の場合と同じである。他の場所を指定するには、setPath() を使用します。
例
bool readXmlFile(QIODevice &device, QSettings::SettingsMap &map); bool writeXmlFile(QIODevice &device, const QSettings::SettingsMap &map); int main(int argc, char *argv[]) { const QSettings::Format XmlFormat = QSettings::registerFormat("xml", readXmlFile, writeXmlFile); QSettings settings(XmlFormat, QSettings::UserScope, "MySoft", "Star Runner"); ... }
注意:この関数はスレッドセーフです。
setPath()も参照のこと 。
void QSettings::remove(QAnyStringView key)
設定key およびkey のサブ設定を削除します。
例
QSettings settings; settings.setValue("ape"); settings.setValue("monkey", 1); settings.setValue("monkey/sea", 2); settings.setValue("monkey/doe", 4); settings.remove("monkey"); QStringList keys = settings.allKeys(); // keys: ["ape"]
例: フォールバック・ロケーションの 1 つに同じキーを持つ設定が含まれている場合、 remove() を呼び出した後にその設定が表示されることに注意してください。
key が空文字列の場合、現在のgroup() のすべてのキーが削除されます。例えば
QSettings settings; settings.setValue("ape"); settings.setValue("monkey", 1); settings.setValue("monkey/sea", 2); settings.setValue("monkey/doe", 4); settings.beginGroup("monkey"); settings.remove(""); settings.endGroup(); QStringList keys = settings.allKeys(); // keys: ["ape"]
Windows のレジストリと INI ファイルは大文字小文字を区別しないキーを使用しますが、macOS と iOS の CFPreferences API は大文字小文字を区別するキーを使用することに注意してください。移植性の問題を避けるために、Section and Key Syntax のルールを参照してください。
注意: Qt 6.4 より前のバージョンでは、この関数はQAnyStringView ではなくQString を取っていました。
setValue(),value(),contains()も参照してください 。
QSettings::Scope QSettings::scope() const
設定の保存に使用したスコープを返します。
format()、organizationName() およびapplicationName()も参照 。
void QSettings::setArrayIndex(int i)
現在の配列のインデックスをi に設定する。setValue()、value()、remove()、contains() などの関数を呼び出すと、そのインデックスの配列エントリが操作される。
この関数を呼び出す前に、beginReadArray() またはbeginWriteArray() を呼び出す必要があります。
void QSettings::setAtomicSyncRequired(bool enable)
設定のアトミックな保存と再ロード(同期)を実行するためにQSettings が必要かどうかを設定します。enable 引数がtrue
(デフォルト) の場合、sync() はアトミックな同期操作のみを実行する。これが不可能な場合、sync ()は失敗し、status ()はエラー状態になります。
このプロパティをfalse
に設定すると、QSettings は構成ファイルに直接書き込むことができ、同時に書き込もうとする他のプロセスに対してロックしようとするエラーは無視されます。破損の可能性があるため、このオプションの使用には注意が必要であるが、書き込み不可能なディレクトリに存在するQSettings::IniFormat 構成ファイルや、NTFS代替データストリームなど、特定の条件下では必要である。
この機能の詳細についてはQSaveFile を参照のこと。
isAtomicSyncRequired() およびQSaveFileも参照のこと 。
[static]
void QSettings::setDefaultFormat(QSettings::Format format)
QSettings(QObject *) コンストラクタの設定を格納するために使用されるデフォルトのファイル・フォーマットを、指定されたformat に設定します。
デフォルトフォーマットが設定されていない場合は、QSettings::NativeFormat が使用されます。使用しているQSettings コンストラクタがこの関数を無視するかどうかは、そのコンストラクタのドキュメントを参照してください。
defaultFormat() およびformat()も参照 。
void QSettings::setFallbacksEnabled(bool b)
フォールバックを有効にするかどうかをb に設定する。
デフォルトでは、フォールバックは有効です。
fallbacksEnabled()も参照 。
[static]
void QSettings::setPath(QSettings::Format format, QSettings::Scope scope, const QString &path)
指定されたformat とscope の設定を保存するために使用されるパスをpath に設定します。format にはカスタムフォーマットを指定できます。
以下の表は、デフォルト値をまとめたものです:
プラットフォーム | フォーマット | スコープ | パス |
---|---|---|---|
Windows | IniFormat | UserScope | FOLDERID_RoamingAppData |
SystemScope | FOLDERID_ProgramData | ||
Unix | NativeFormat,IniFormat | UserScope | $HOME/.config |
SystemScope | /etc/xdg | ||
macOSおよびiOS | IniFormat | UserScope | $HOME/.config |
SystemScope | /etc/xdg |
Unix、macOS、iOS のデフォルトのUserScope パス ($HOME/.config
または $HOME/Settings) は、XDG_CONFIG_HOME
環境変数を設定することで、ユーザーがオーバーライドできます。Unix、macOS、iOS のデフォルトのSystemScope パス (/etc/xdg
) は、configure
スクリプトの-sysconfdir
フラグを使用して Qt ライブラリをビルドするときにオーバーライドできます (詳細はQLibraryInfo を参照)。
Windows、macOS、iOS でNativeFormat のパスを設定しても効果はありません。
警告 この関数は既存のQSettings オブジェクトには影響しません。
registerFormat()も参照 。
void QSettings::setValue(QAnyStringView key, const QVariant &value)
設定key の値をvalue に設定する。key がすでに存在する場合は、前の値が上書きされる。
WindowsのレジストリとINIファイルは大文字と小文字を区別しないキーを使用しますが、macOSとiOSのCFPreferences APIは大文字と小文字を区別するキーを使用することに注意してください。移植性の問題を避けるために、Section and Key Syntax のルールを参照してください。
例
QSettings settings; settings.setValue("interval", 30); settings.value("interval").toInt(); // returns 30 settings.setValue("interval", 6.55); settings.value("interval").toDouble(); // returns 6.55
注意: Qt 6.4 より前のバージョンでは、この関数はQAnyStringView ではなくQString を取っていました。
value(),remove(),contains()も参照してください 。
QSettings::Status QSettings::status() const
QSettings によって最初に検出されたエラーを示すステータスコード、またはエラーが発生しなかった場合はQSettings::NoError を返す。
QSettings 、一部の操作の実行が遅れることに注意。このため、sync() を呼び出して、QSettings に格納されているデータが status() を呼び出す前にディスクに書き込まれるようにするとよい。
sync()も参照のこと 。
void QSettings::sync()
未保存の変更を永久記憶装置に書き込み、その間に他のアプリケーションによって変更された設定を再読み込みします。
この関数はQSettings のデストラクタやイベントループから定期的に自動的に呼び出されるので、通常は自分で呼び出す必要はありません。
status()も参照 。
© 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.