QSettings Class

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

Header: #include <QSettings>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Inherits: QObject

注意:このクラスの関数はすべてリエントラントです。

注意:これらの関数はスレッドセーフでもあります:

  • 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 をベースにしており、QStringQRectQImage のようなほとんどの値ベースの型を最小限の労力で保存することができます。

非永続メモリ・ベースの構造体が必要な場合は、代わりに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 の一部であるQColorQImageQPixmap のようなデータ型への変換関数を提供することはできません。言い換えれば、QVariant にはtoColor()toImage()toPixmap() 関数はありません。

代わりに、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は大文字と小文字を区別するキーを使用します。移植性の問題を避けるために、以下の簡単なルールに従ってください:

  1. 常に同じキーを同じ大文字と小文字で参照する。例えば、コードのある場所でキーを "text fonts "と呼ぶ場合、他の場所では "Text Fonts "と呼ばないこと。
  2. 大文字小文字を除いて同じキー名は避けてください。例えば、「MainWindow」というキーがある場合、別のキーを「mainwindow」として保存しようとしないでください。
  3. バックスラッシュ文字はサブキーを区切るために使用されます(下記参照)。バックスラッシュ文字はサブキーを区切るために使用されます(下記を参照)。ウィンドウ上では'˶'は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 つの場所が順に検索されます:

  1. Star Runner アプリケーションのユーザー固有の場所
  2. MySoft によるすべてのアプリケーションのユーザー固有の場所
  3. Star Runnerアプリケーションのシステム全体の場所
  4. 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 "は、その場所が読み込み時のフォールバックとして使用されることを意味します。

ロケーションobj1obj2obj3obj4
1.ユーザー、アプリケーションX
2.ユーザー、組織oX
3.システム、アプリケーションoX
4.システム、組織oooX

この仕組みの優れた点は、Qt がサポートするすべてのプラットフォームで動作することと、ファイル名やレジストリパスを指定する必要がなく、多くの柔軟性が残っていることです。

ネイティブAPIの代わりにINIファイルを全プラットフォームで使いたい場合は、QSettingsコンストラクタの第一引数にQSettings::IniFormat 、その後にスコープ、組織名、アプリケーション名を渡します:

    QSettings settings(QSettings::IniFormat, QSettings::UserScope,
                       "MySoft", "Star Runner");

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() 関数は、以下のようにメインウィンドウのコンストラクタとクローズイベントハンドラから呼び出す必要があります:

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 の場合、デフォルトで以下のファイルが使用されます:

  1. $HOME/.config/MySoft/Star Runner.conf
  2. $HOME/.config/MySoft.conf
  3. XDG_CONFIG_DIRS 内の各ディレクトリ <dir> に対して:<dir>/MySoft/Star Runner.conf
  4. XDG_CONFIG_DIRS 内の各ディレクトリ <dir> に対して:<dir>/MySoft.conf

注: XDG_CONFIG_DIRS が設定されていない場合、デフォルト値の/etc/xdg が使用されます。

macOS および iOS では、ファイル形式がNativeFormat の場合、これらのファイルがデフォルトで使用されます:

  1. $HOME/Library/Preferences/com.MySoft.Star Runner.plist
  2. $HOME/Library/Preferences/com.MySoft.plist
  3. /Library/Preferences/com.MySoft.Star Runner.plist
  4. /Library/Preferences/com.MySoft.plist

Windowsでは、NativeFormat の設定は以下のレジストリ・パスに保存されます:

  1. HKEY_CURRENT_USER\Software\MySoft\Star Runner
  2. HKEY_CURRENT_USER\Software\MySoft\OrganizationDefaults
  3. HKEY_LOCAL_MACHINE\Software\MySoft\Star Runner
  4. HKEY_LOCAL_MACHINE\Software\MySoft\OrganizationDefaults

注: Windowsでは、WOW64モードで動作する32ビット・プログラムの場合、設定は次のレジストリ・パスに格納されます:HKEY_LOCAL_MACHINE\Software\WOW6432node

ファイル形式がNativeFormat の場合、アプリケーションのホームディレクトリの「Settings/MySoft/Star Runner.conf」になります。

ファイル形式がIniFormat の場合、Unix、macOS、iOSでは以下のファイルが使用されます:

  1. $HOME/.config/MySoft/Star Runner.ini
  2. $HOME/.config/MySoft.ini
  3. XDG_CONFIG_DIRS 内の各ディレクトリ <dir> に対して:<dir>/MySoft/Star Runner.ini
  4. XDG_CONFIG_DIRS 内の各ディレクトリ <dir> に対して::<dir>/MySoft.ini

メモ: XDG_CONFIG_DIRS が設定されていない場合、デフォルト値の/etc/xdg が使用されます。

Windows では、次のファイルが使用されます:

  1. FOLDERID_RoamingAppData\MySoft\Star Runner.ini
  2. FOLDERID_RoamingAppData\MySoft.ini
  3. FOLDERID_ProgramData\MySoft\Star Runner.ini
  4. 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 settings("/home/petra/misc/myapp.ini",
                   QSettings::IniFormat);

QSettingsオブジェクトを使用して、ファイル内の設定を読み書きできます。

.plist macOSとiOSでは、第2引数にQSettings::NativeFormat 。例えば

QSettings settings("/Users/petra/misc/myapp.plist",
                   QSettings::NativeFormat);

Windowsレジストリへの直接アクセス

Windowsでは、QSettingsを使用することで、システムレジストリにあるQSettingsで書き込まれた設定(または文字列データなどサポートされている形式の設定)にアクセスすることができます。これは、レジストリ内のパスを指定してQSettingsオブジェクトを構築し、QSettings::NativeFormat

例えば、以下のようになります:

QSettings settings("HKEY_CURRENT_USER\\Software\\Microsoft\\Office",
                   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つの解決策は、プリプロセッサ・ディレクティブを使用することです:
    #ifdef Q_OS_DARWIN
        QSettings settings("grenoullelogique.fr", "Squash");
    #else
        QSettings settings("Grenoulle Logique", "Squash");
    #endif
  • macOSでは、10.7(Lion)で、現在のユーザーに属さない設定(つまり、SystemScope )にアクセスする権限が変更されました。それ以前のバージョンでは、管理者権限を持つユーザーはこれらにアクセスできました。10.7と10.8(Mountain Lion)では、rootだけがアクセスできます。しかし、10.9(Mavericks)では、このルールが再び変更されましたが、ネイティブフォーマット(plistファイル)のみです。

QVariant およびQSessionManagerも参照してください

メンバ型の説明

enum QSettings::Format

この enum 型は、QSettings で使用される保存形式を指定します。

定数説明
QSettings::NativeFormat0プラットフォームに最も適した保存形式を使用して設定を保存します。Windows ではシステムレジストリ、macOS と iOS では CFPreferences API、Unix では INI 形式のテキストファイルです。
QSettings::Registry32Format2Windowsのみ:64ビットWindows上で動作する64ビットアプリケーションから、32ビットシステムレジストリに明示的にアクセスする。32ビットWindowsまたは64ビットWindows上の32ビットアプリケーションから、NativeFormatを指定するのと同じ動作をします。この列挙値は Qt 5.7 で追加されました。
QSettings::Registry64Format3Windows のみ:Windows のみ: 64 ビット Windows 上で動作する 32 ビットアプリケーションから 64 ビットシステムレジストリに明示的にアクセスします。32 ビット Windows または 64 ビット Windows 上の 64 ビットアプリケーションから、NativeFormat を指定するのと同じ動作をします。この列挙値は Qt 5.7 で追加されました。
QSettings::IniFormat1設定を INI ファイルに保存します。INI ファイルは、数値データとそれをエンコードするために使用される文字列の区別を失いますので、数値として書き込まれた値はQString として読み返されることに注意してください。
QSettings::WebLocalStorageFormat4WASMのみ:現在のオリジンのwindow.localStorageに設定を保存します。クッキーが許可されていない場合、INIフォーマットに戻ります。これはオリジンごとに最大5MBのストレージを提供しますが、アクセスは同期的であり、JSPIは必要ありません。
QSettings::WebIndexedDBFormat5WASMのみ:現在のオリジンのインデックス付きDBに設定を保存します。クッキーが許可されていない場合、INI形式に戻ります。これは JSPI を必要としますが、WebLocalStorageFormat よりも多くのストレージを提供します。
QSettings::InvalidFormat16registerFormat() が返す特別な値。

Unixでは、NativeFormatとIniFormatはファイル拡張子が異なる以外は同じ意味です(NativeFormatは.conf 、IniFormatは.ini )。

INIファイルフォーマットはWindowsのファイルフォーマットで、Qtはすべてのプラットフォームでサポートしています。INIの標準がない場合、以下の例外を除いて、Microsoftが行っていることに従うようにしています:

  • QVariantQString に変換できない型(例えば、QPointQRectQSize )を保存する場合、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

次のシグネチャを持つ関数へのポインタのための型定義です:

bool myReadFunc(QIODevice &device, QSettings::SettingsMap &map);

ReadFunc は、 で、キーと値のペアのセットを読み込む関数へのポインタとして使用されます。 は、1回のパスですべてのオプションを読み込み、初期状態では空の コンテナにすべての設定を返す必要があります。registerFormat() ReadFunc SettingsMap

WriteFunc およびregisterFormat()も参照

enum QSettings::Scope

この列挙型は、設定がユーザー固有なのか、同じシステムのすべてのユーザーによって共有されるのかを指定します。

定数説明
QSettings::UserScope0現在のユーザに固有の場所(例えば、ユーザのホーム・ディレクトリ)に設定を格納します。
QSettings::SystemScope1同じマシン上のすべてのユーザが同じ設定セットにアクセスできるように、グローバルな場所に設定を保存します。

setPath()も参照のこと

QSettings::SettingsMap

QMap<QString,QVariant> の型定義。

registerFormat()参照のこと。

enum QSettings::Status

以下のステータス値が可能である:

定数説明
QSettings::NoError0エラーは発生しませんでした。
QSettings::AccessError1アクセスエラーが発生した(読み取り専用ファイルに書き込もうとしたなど)。
QSettings::FormatError2フォーマット・エラーが発生しました (不正な INI ファイルの読み込みなど)。

status()も参照

QSettings::WriteFunc

以下のシグネチャを持つ関数へのポインタの型定義:

bool myWriteFunc(QIODevice &device, const QSettings::SettingsMap &map);

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 オブジェクトを構築します。ファイルがまだ存在しない場合、そのファイルが作成されます。

formatQSettings::NativeFormat の場合、fileName の意味はプラットフォームによって異なります。Unixでは、fileName はINIファイルの名前です。macOSとiOSでは、fileName.plist ファイルの名前です。Windowsでは、fileName はシステム・レジストリ内のパスである。

formatQSettings::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 parent という組織から というアプリケーションの設定にアクセスするための QSettings オブジェクトを構築します。application

scopeQSettings::UserScope の場合、QSettings オブジェクトは、フォールバックとしてシステム全体の設定を検索する前に、まずユーザー固有の設定を検索します。scopeQSettings::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 parent という組織から というアプリケーションの設定にアクセスするための QSettings オブジェクトを構築します。application

scopeQSettings::UserScope の場合、QSettings オブジェクトは、フォールバックとしてシステム全体の設定を検索する前に、まずユーザ固有の設定を検索します。scopeQSettings::SystemScope の場合、QSettings オブジェクトはユーザー固有の設定を無視し、システム全体の設定にアクセスします。

formatQSettings::NativeFormat の場合、設定の保存にはネイティブ API が使用されます。formatQSettings::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()を使います。

注意: 6.4より前のバージョンのQtでは、この関数は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 は、そのフォーマットに関連付けられたファイル拡張子である('.'は含まない)。

readFuncwriteFunc のパラメータは、キーと値のペアを読み書きする関数へのポインタです。読み書き関数へのQIODevice パラメータは、常にバイナリモードで開かれます(つまり、QIODevice::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 にはカスタム形式を指定できます。

以下の表に、デフォルト値をまとめます:

プラットフォームプラットフォームスコープパス
WindowsIniFormatUserScopeFOLDERID_RoamingAppData
SystemScopeFOLDERID_ProgramData
UnixNativeFormat,IniFormatUserScope$HOME/.config
SystemScope/etc/xdg
macOSおよびiOSIniFormatUserScope$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()も参照してください

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