Класс QSettings
Класс QSettings предоставляет платформенно-независимые постоянные параметры приложения. Подробнее...
| Заголовок: | #include <QSettings> |
| qmake: | QT += core |
| Наследует: | QObject |
Примечание: Все функции в этом классе являются перевходящими.
Примечание: Эти функции также безопасны в многопоточном доступе:
- registerFormat(const QString &extension, QSettings::ReadFunc readFunc, QSettings::WriteFunc writeFunc, Qt::CaseSensitivity caseSensitivity)
Общие типы
| Перечисление | Формат { NativeFormat, Registry32Format, Registry64Format, IniFormat, InvalidFormat } |
| Тип | ReadFunc |
| Перечисление | Область { UserScope, SystemScope } |
| Тип | SettingsMap |
| Перечисление | Статус { NoError, AccessError, FormatError } |
| Тип | WriteFunc |
Открытые функции
| 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) | |
| QSettings(const QString &fileName, QSettings::Format format, QObject *parent = nullptr) | |
| QSettings(QObject *parent = nullptr) | |
| виртуальный | ~QSettings() |
| QStringList | всеКлючи() const |
| QString | имяПриложения() const |
| void | началоГруппы(const QString &prefix) |
| int | началоСчитыванияМассива(const QString &prefix) |
| void | началоЗаписиМассива(const QString &prefix, int size = -1) |
| QStringList | вложенныеГруппы() const |
| QStringList | вложенныеКлючи() const |
| void | очистить() |
| bool | содержит(const QString &key) const |
| void | конецМассива() |
| void | конецГруппы() |
| bool | включитьОбработкуПодстановок() const |
| QString | имяФайла() const |
| QSettings::Format | формат() const |
| QString | группа() const |
| QTextCodec * | iniКодек() const |
| bool | требуетсяАтомарнаяСинхронизация() const |
| bool | можноЗаписывать() const |
| QString | имяОрганизации() const |
| void | удалить(const QString &key) |
| QSettings::Scope | область() const |
| void | установитьИндексМассива(int i) |
| void | требоватьАтомарнуюСинхронизацию(bool enable) |
| void | включитьОбработкуПодстановок(bool b) |
| void | установитьIniКодек(QTextCodec *codec) |
| void | установитьIniКодек(const char *codecName) |
| void | установитьЗначение(const QString &key, const QVariant &value) |
| QSettings::Status | статус() const |
| void | синхронизировать() |
| QVariant | значение(const QString &key, const QVariant &defaultValue = QVariant()) const |
- 32 открытые функции унаследованы от QObject
Статические открытые члены
| QSettings::Format | постоянныйФормат() |
| QSettings::Format | зарегистрироватьФормат(const QString &extension, QSettings::ReadFunc readFunc, QSettings::WriteFunc writeFunc, Qt::CaseSensitivity caseSensitivity = Qt::CaseSensitive) |
| void | установитьПостоянныйФормат(QSettings::Format format) |
| void | установитьПуть(QSettings::Format format, QSettings::Scope scope, const QString &path) |
- 11 статических открытых членов унаследованы от QObject
Переопределённые защищённые функции
| виртуальный bool | событие(QEvent *event) override |
- 9 защищённых функций унаследованы от QObject
Дополнительные унаследованные члены
- 1 свойство унаследовано от QObject
- 1 открытый слот унаследован от QObject
- 2 сигнала унаследованы от QObject
- 9 защищённых функций унаследованы от QObject
Подробное описание
Класс QSettings предоставляет средства для сохранения независимых от платформы настроек приложения.
Пользователи обычно ожидают, что приложение будет сохранять свои настройки (размеры и позиции окон, опции и т.д.) между сессиями. Эта информация часто хранится в системном реестре на Windows и в файлах списков свойств на macOS и iOS. В системах Unix, в отсутствие стандарта, многие приложения (включая приложения KDE) используют текстовые файлы INI.
QSettings — это абстракция над этими технологиями, позволяющая сохранять и восстанавливать настройки приложения переносимым способом. Он также поддерживает специальные форматы хранения.
API класса QSettings основан на 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 вместо имени организации, так как приложения macOS и iOS традиционно используют домены интернета для идентификации. Если домен не задан, он выводится из имени организации. Подробнее см. Примечания к платформенным особенностям ниже.)
QSettings хранит настройки. Каждая настройка состоит из QString, который определяет имя настройки (ключ), и QVariant, который хранит данные, связанные с ключом. Для записи настройки используйте setValue(). Например:
settings.setValue("editor/wrapMargin", 68); Если уже существует настройка с тем же ключом, то существующее значение перезаписывается новым значением. Для повышения эффективности изменения могут не сохраняться в постоянной памяти сразу. (Вы всегда можете вызвать sync(), чтобы сохранить изменения.)
Вы можете получить значение настройки, используя value():
int margin = settings.value("editor/wrapMargin").toInt(); Если нет настройки с указанным именем, QSettings возвращает нулевой QVariant (который можно преобразовать в целое число 0). Вы можете указать другое значение по умолчанию, передав второй аргумент в value():
int margin = settings.value("editor/wrapMargin", 80).toInt(); Для проверки существования заданного ключа используйте contains(). Для удаления настройки, связанной с ключом, используйте remove(). Для получения списка всех ключей, используйте allKeys(). Для удаления всех ключей, используйте clear().
QVariant и типы GUI
Поскольку QVariant является частью модуля Qt Core, он не может предоставлять функции преобразования в такие типы данных, как QColor, QImage и QPixmap, которые являются частью Qt GUI. Другими словами, в QVariant нет функций toColor(), toImage(), или toPixmap().
Вместо этого вы можете использовать QVariant::value() или шаблонную функцию qVariantValue(). Например:
QSettings settings("MySoft", "Star Runner");
QColor color = settings.value("DataPump/bgcolor").value<QColor>(); Обратное преобразование (например, из QColor в QVariant) происходит автоматически для всех типов данных, поддерживаемых QVariant, включая типы, относящиеся к GUI:
QSettings settings("MySoft", "Star Runner");
QColor color = palette().background().color();
settings.setValue("DataPump/bgcolor", color); Пользовательские типы, зарегистрированные с помощью qRegisterMetaType() и qRegisterMetaTypeStreamOperators(), могут храниться с помощью QSettings.
Синтаксис секций и ключей
Ключи настроек могут содержать любые символы Юникода. Реестр Windows и файлы INI используют нечувствительные к регистру ключи, тогда как API CFPreferences на macOS и iOS используют чувствительные к регистру ключи. Чтобы избежать проблем с переносимостью, следуйте этим простым правилам:
- Всегда используйте один и тот же регистр для одного и того же ключа. Например, если вы используете ключ "шрифты текста" в одном месте кода, не используйте "Шрифты текста" где-то еще.
- Избегайте имен ключей, которые идентичны, за исключением регистра. Например, если у вас есть ключ, названный "MainWindow", не пытайтесь сохранить другой ключ как "mainwindow".
- Не используйте косые черты ('/' и '\') в именах секций или ключей; обратная косая черта используется для разделения подключаемых ключей (см. ниже). В Windows '\' преобразуются 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 также поддерживает понятие "массива". Подробнее см. beginReadArray() и beginWriteArray().
Механизм обратного поиска
Предположим, вы создали объект QSettings с именем организации MySoft и приложением Star Runner. При поиске значения ищутся до четырех мест в указанном порядке:
- место для приложения Star Runner, связанное с пользователем
- место для всех приложений MySoft, связанное с пользователем
- общесистемное место для приложения Star Runner
- общесистемное место для всех приложений MySoft
(См. Примечания к платформенным особенностям ниже, чтобы узнать, где находятся эти места в поддерживаемых Qt платформах.)
Если ключ не найден в первом месте, поиск продолжается во втором месте и так далее. Это позволяет хранить общесистемные или организационные настройки и переопределять их на уровне пользователя или приложения. Чтобы отключить этот механизм, вызовите setFallbacksEnabled(false).
Хотя ключи из всех четырех мест доступны для чтения, только первый файл (место, связанное с пользователем для конкретного приложения) доступен для записи. Чтобы записать в любой другой файл, опустите имя приложения и/или укажите 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 платформах и предлагает большую гибкость без необходимости указывать имена файлов или пути к реестру.
Если вы хотите использовать INI-файлы на всех платформах вместо родного API, вы можете передать QSettings::IniFormat в качестве первого аргумента конструктору QSettings, после чего укажите область, имя организации и имя приложения:
QSettings settings(QSettings::IniFormat, QSettings::UserScope,
"MySoft", "Star Runner"); Пример Settings Editor позволяет вам поэкспериментировать с различными местами хранения настроек и с включенным или выключенным обратным поиском.
Восстановление состояния графического приложения
QSettings часто используется для сохранения состояния графического приложения. Следующий пример иллюстрирует, как использовать QSettings для сохранения и восстановления геометрии главного окна приложения.
void MainWindow::writeSettings()
{
QSettings settings("Moose Soft", "Clipper");
settings.beginGroup("MainWindow");
settings.setValue("size", size());
settings.setValue("pos", pos());
settings.endGroup();
}
void MainWindow::readSettings()
{
QSettings settings("Moose Soft", "Clipper");
settings.beginGroup("MainWindow");
resize(settings.value("size", QSize(400, 400)).toSize());
move(settings.value("pos", QPoint(200, 200)).toPoint());
settings.endGroup();
} См. Геометрия окна для обсуждения того, почему лучше вызывать QWidget::resize() и QWidget::move() вместо QWidget::setGeometry() для восстановления геометрии окна.
Функции readSettings() и writeSettings() должны вызываться из конструктора главного окна и обработчика события закрытия следующим образом:
MainWindow::MainWindow()
{
...
readSettings();
}
void MainWindow::closeEvent(QCloseEvent *event)
{
if (userReallyWantsToQuit()) {
writeSettings();
event->accept();
} else {
event->ignore();
}
} См. пример Application для автономного примера, использующего QSettings.
Доступ к настройкам из нескольких потоков или процессов одновременно
QSettings является потокобезопасным. Это означает, что вы можете использовать различные объекты QSettings в разных потоках одновременно. Эта гарантия действует даже тогда, когда объекты QSettings ссылаются на те же файлы на диске (или на те же записи в системном реестре). Если настройка изменяется через один объект QSettings, изменение сразу же будет видно в других объектах QSettings, которые работают с тем же местом и находятся в одном процессе.
QSettings безопасно можно использовать из разных процессов (которые могут быть различными экземплярами вашего приложения, работающими одновременно, или совершенно разными приложениями) для чтения и записи в одни и те же системные места, при соблюдении определенных условий. Для QSettings::IniFormat используется консультационная блокировка файла и умный алгоритм слияния для обеспечения целостности данных. Условием для работы этого является то, что записываемый конфигурационный файл должен быть обычным файлом и должен находиться в каталоге, в котором текущий пользователь может создавать новые временные файлы. Если это не так, то необходимо использовать setAtomicSyncRequired() для отключения защиты.
Обратите внимание, что sync() импортирует изменения, внесенные другими процессами (в дополнение к записи изменений из этого QSettings).
Примечания к платформе
Расположение хранилища настроек приложения
Как упоминалось в разделе Механизм обратного вызова, QSettings хранит настройки приложения вплоть до четырёх мест, в зависимости от того, являются ли настройки специфичными для пользователя или глобальными, и являются ли настройки привязанными к приложению или организации. Для простоты мы предполагаем, что организация называется MySoft, а приложение — Star Runner.
В системах Unix, если формат файла — NativeFormat, по умолчанию используются следующие файлы:
-
$HOME/.config/MySoft/Star Runner.conf(Qt для встраиваемой Linux:$HOME/Settings/MySoft/Star Runner.conf) -
$HOME/.config/MySoft.conf(Qt для встраиваемой Linux:$HOME/Settings/MySoft.conf) - для каждого каталога <dir> в $XDG_CONFIG_DIRS:
<dir>/MySoft/Star Runner.conf - для каждого каталога <dir> в $XDG_CONFIG_DIRS:
<dir>/MySoft.conf
Примечание: Если XDG_CONFIG_DIRS не задан, используется значение по умолчанию /etc/xdg.
В версиях macOS 10.2 и 10.3 по умолчанию используются эти файлы:
$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 RunnerHKEY_CURRENT_USER\Software\MySoft\OrganizationDefaultsHKEY_LOCAL_MACHINE\Software\MySoft\Star RunnerHKEY_LOCAL_MACHINE\Software\MySoft\OrganizationDefaults
Примечание: В Windows для 32-битных программ, работающих в режиме WOW64, настройки хранятся в следующем пути реестра: HKEY_LOCAL_MACHINE\Software\WOW6432node.
Если формат файла — NativeFormat, это "Settings/MySoft/Star Runner.conf" в домашнем каталоге приложения.
Если формат файла — IniFormat, в системах Unix, macOS и iOS используются следующие файлы:
-
$HOME/.config/MySoft/Star Runner.ini(Qt для встраиваемой Linux:$HOME/Settings/MySoft/Star Runner.ini) -
$HOME/.config/MySoft.ini(Qt для встраиваемой Linux:$HOME/Settings/MySoft.ini) - для каждого каталога <dir> в $XDG_CONFIG_DIRS:
<dir>/MySoft/Star Runner.ini - для каждого каталога <dir> в $XDG_CONFIG_DIRS:
<dir>/MySoft.ini
Примечание: Если XDG_CONFIG_DIRS не задан, используется значение по умолчанию /etc/xdg.
В Windows используются следующие файлы:
FOLDERID_RoamingAppData\MySoft\Star Runner.iniFOLDERID_RoamingAppData\MySoft.iniFOLDERID_ProgramData\MySoft\Star Runner.iniFOLDERID_ProgramData\MySoft.ini
Идентификаторы, начинающиеся с FOLDERID_, представляют собой специальные списки идентификаторов элементов, которые необходимо передать функции Win32 API SHGetKnownFolderPath(), чтобы получить соответствующий путь.
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, принимающий имя файла в качестве первого аргумента, и передать QSettings::IniFormat в качестве второго аргумента. Например:
QSettings settings("/home/petra/misc/myapp.ini",
QSettings::IniFormat); После этого вы можете использовать объект QSettings для чтения и записи настроек в файле.
В macOS и iOS можно получить доступ к файлам списков свойств .plist путём передачи 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, содержащие слэши или обратные слэши; если вам нужно это сделать, используйте родную функцию API 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 символов. Один из способов обойти эти ограничения — хранить настройки в формате IniFormat вместо NativeFormat.
- В Windows, когда используется системный реестр Windows, QSettings не сохраняет исходный тип значения. Поэтому тип значения может измениться при установке нового значения. Например, значение с типом
REG_EXPAND_SZизменится наREG_SZ. - В macOS и iOS allKeys() вернёт несколько дополнительных ключей для глобальных настроек, которые применимы ко всем приложениям. Эти ключи могут быть прочитаны с помощью value(), но не могут быть изменены, только скрыты. Вызов setFallbacksEnabled(false) скроет эти глобальные настройки.
- В macOS и iOS API CFPreferences, используемый QSettings, ожидает доменные имена интернета, а не имена организаций. Чтобы обеспечить единый API, QSettings генерирует подставное доменное имя из имени организации (если имя организации уже не является доменным именем, например, OpenOffice.org). Алгоритм добавляет ".com" к названию компании и заменяет пробелы и другие недопустимые символы дефисами. Если вы хотите указать другое доменное имя, вызовите QCoreApplication::setOrganizationDomain(), QCoreApplication::setOrganizationName() и QCoreApplication::setApplicationName() в вашей функции
main()и затем используйте конструктор по умолчанию QSettings. Другим решением является использование директив препроцессора, например:#ifdef Q_OS_MAC QSettings settings("grenoullelogique.fr", "Squash"); #else QSettings settings("Grenoulle Logique", "Squash"); #endif - В macOS права доступа к настройкам, не принадлежащим текущему пользователю (т.е. SystemScope), изменились с версии 10.7 (Lion). До этой версии пользователи с правами администратора могли получать к ним доступ. Для 10.7 и 10.8 (Mountain Lion) доступ имеет только root. Однако в версии 10.9 (Mavericks) это правило меняется снова, но только для родного формата (файлы plist).
См. также QVariant, QSessionManager, Пример редактора настроек и Пример приложения.
Документация по типам членов
enum QSettings::Format
Этот перечисляемый тип определяет формат хранения, используемый QSettings.
| Константа | Значение | Описание |
|---|---|---|
QSettings::NativeFormat |
0 |
Хранит настройки с использованием наиболее подходящего формата хранения для платформы. В Windows это означает системный реестр; в macOS и iOS — API CFPreferences; в Unix — текстовые файлы конфигурации в формате INI. |
QSettings::Registry32Format |
2 |
Только Windows: Явно обращается к 32-битному системному реестру из 64-битного приложения, работающего в 64-битной Windows. В 32-битной Windows или из 32-битного приложения в 64-битной Windows это работает так же, как и при указании NativeFormat. Это значение перечисления было добавлено в Qt 5.7. |
QSettings::Registry64Format |
3 |
Только Windows: Явно обращается к 64-битному системному реестру из 32-битного приложения, работающего в 64-битной Windows. В 32-битной Windows или из 64-битного приложения в 64-битной Windows это работает так же, как и при указании NativeFormat. Это значение перечисления было добавлено в Qt 5.7. |
QSettings::IniFormat |
1 |
Хранит настройки в файлах INI. |
QSettings::InvalidFormat |
16 |
Специальное значение, возвращаемое registerFormat(). |
В Unix, NativeFormat и IniFormat означают одно и то же, за исключением того, что расширение файла отличается (.conf для NativeFormat, .ini для IniFormat).
Формат 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»), она будет отображаться в разделе «General» INI-файла. Чтобы избежать перезаписи других ключей, если вы сохраняете что-то с ключом, таким как «General/someKey», ключ будет находиться в разделе «%General», а не в разделе «General». - Следуя философии, согласно которой мы должны быть либеральны в том, что принимаем, и консервативны в том, что генерируем, QSettings будет принимать INI-файлы, закодированные в Latin-1, но генерировать чистые ASCII-файлы, где значения, не являющиеся ASCII, кодируются с использованием стандартных INI-последовательностей экранирования. Чтобы сделать INI-файлы более читабельными (но потенциально менее совместимыми), вызовите setIniCodec().
См. также registerFormat() и setPath().
typedef QSettings::ReadFunc
Тип для указателя на функцию со следующим сигнатуром:
bool myReadFunc(QIODevice &device, QSettings::SettingsMap &map);
ReadFunc используется в registerFormat() в качестве указателя на функцию, которая считывает набор пар «ключ-значение». ReadFunc должен прочитать все параметры за один проход и вернуть все настройки в контейнер SettingsMap, который изначально пуст.
См. также WriteFunc и registerFormat().
enum QSettings::Scope
Этот перечисление определяет, являются ли настройки специфичными для пользователя или общими для всех пользователей одной системы.
| Постоянная | Значение | Описание |
|---|---|---|
QSettings::UserScope |
0 |
Хранит настройки в месте, специфичном для текущего пользователя (например, в домашнем каталоге пользователя). |
QSettings::SystemScope |
1 |
Хранит настройки в глобальном месте, так что все пользователи на одном компьютере имеют доступ к одному набору настроек. |
См. также setPath().
typedef QSettings::SettingsMap
Тип для QMap<QString, QVariant>.
См. также registerFormat().
enum QSettings::Status
Возможны следующие значения состояния:
| Постоянная | Значение | Описание |
|---|---|---|
QSettings::NoError |
0 |
Ошибка не произошла. |
QSettings::AccessError |
1 |
Произошла ошибка доступа (например, попытка записи в файл только для чтения). |
QSettings::FormatError |
2 |
Произошла ошибка формата (например, загрузка поврежденного INI-файла). |
См. также status().
typedef QSettings::WriteFunc
Тип для указателя на функцию со следующим сигнатуром:
bool myWriteFunc(QIODevice &device, const QSettings::SettingsMap &map);
WriteFunc используется в registerFormat() в качестве указателя на функцию, которая записывает набор пар «ключ-значение». WriteFunc вызывается только один раз, поэтому вам нужно вывести настройки за один раз.
См. также ReadFunc и registerFormat().
Документация функций-членов
QSettings::QSettings(const QString &organization, const QString &application = QString(), QObject *parent = nullptr)
Конструирует объект QSettings для доступа к настройкам приложения с именем application из организации с именем organization и с родителем parent.
Пример:
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)
Конструирует объект QSettings для доступа к настройкам приложения с именем application из организации с именем organization и с родителем 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)
Конструирует объект QSettings для доступа к настройкам приложения с именем application из организации с именем organization и с родителем parent.
Если scope равен QSettings::UserScope, объект QSettings сначала ищет настройки, специфичные для пользователя, а затем использует системные настройки в качестве резервного варианта. Если scope равен QSettings::SystemScope, объект QSettings игнорирует настройки, специфичные для пользователя, и предоставляет доступ к системным настройкам.
Если format равен QSettings::NativeFormat, для хранения настроек используется родной API. Если format равен QSettings::IniFormat, используется формат INI.
Если имя приложения не задано, объект QSettings будет обращаться только к расположениям организации (см. locations).
QSettings::QSettings(const QString &fileName, QSettings::Format format, QObject *parent = nullptr)
Конструирует объект QSettings для доступа к настройкам, сохранённым в файле с именем fileName, с родителем parent. Если файл не существует, он создаётся.
Если format равен QSettings::NativeFormat, значение fileName зависит от платформы. В Unix fileName — это имя INI-файла. В macOS и iOS fileName — имя .plist файла. В Windows fileName — путь в системном реестре.
Если format равен QSettings::IniFormat, fileName — это имя INI-файла.
Предупреждение: Эта функция предоставлена для удобства. Она хорошо работает для доступа к INI или .plist файлам, сгенерированным Qt, но может потерпеть неудачу при работе с некоторыми синтаксисами, встречающимися в таких файлах, созданных другими программами. Обратите особое внимание на следующие ограничения:
- QSettings не предоставляет возможности чтения записей INI с путями, то есть записей с неэкранированными символами слэша. (Это потому, что такие записи неоднозначны и не могут быть автоматически разрешены.)
- В INI-файлах QSettings использует символ
@как метасимвол в некоторых контекстах для кодирования типов данных, специфичных для Qt (например,@Rect), и поэтому может неправильно интерпретировать его, если он встречается в чистых INI-файлах.
См. также fileName().
QSettings::QSettings(QObject *parent = nullptr)
Создаёт объект QSettings для доступа к настройкам приложения и организации, установленным ранее с помощью вызова QCoreApplication::setOrganizationName(), QCoreApplication::setOrganizationDomain() и QCoreApplication::setApplicationName().
Область действия — 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().
[virtual] 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
Возвращает имя приложения, используемое для хранения настроек.
Эта функция была добавлена в Qt 4.4.
См. также QCoreApplication::applicationName(), format(), scope() и organizationName().
void QSettings::beginGroup(const QString &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(); Это установит значения трёх настроек:
mainwindow/sizemainwindow/fullScreenoutputpanel/visible
Вызовите endGroup(), чтобы сбросить текущую группу до значения, которое было до вызова соответствующей функции beginGroup(). Группы могут быть вложенными.
См. также endGroup() и group().
int QSettings::beginReadArray(const QString &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(), чтобы сначала записать массив.
См. также beginWriteArray(), endArray() и setArrayIndex().
void QSettings::beginWriteArray(const QString &prefix, int size = -1)
Добавляет prefix к текущей группе и начинает запись массива размера size. Если size равно -1 (по умолчанию), оно автоматически определяется на основе индексов записываемых элементов.
Если у вас много вхождений определённого набора ключей, вы можете использовать массивы, чтобы облегчить себе задачу. Например, предположим, что вы хотите сохранить переменный список имён пользователей и паролей. Вы можете записать:
struct Login {
QString userName;
QString password;
};
QList<Login> logins;
...
QSettings settings;
settings.beginWriteArray("logins");
for (int i = 0; i < logins.size(); ++i) {
settings.setArrayIndex(i);
settings.setValue("userName", list.at(i).userName);
settings.setValue("password", list.at(i).password);
}
settings.endArray(); Сгенерированные ключи будут иметь вид
logins/sizelogins/1/userNamelogins/1/passwordlogins/2/userNamelogins/2/passwordlogins/3/userNamelogins/3/password- ...
Для чтения массива используйте beginReadArray().
См. также 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(), возвращаются ключи первого уровня в этой группе, без префикса группы.
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.
Записи в резервных расположениях не удаляются.
Если вы хотите только удалить записи в текущей группе, используйте remove("") вместо этого.
См. также remove() и setFallbacksEnabled().
bool QSettings::contains(const QString &key) const
Возвращает true если существует настройка с именем key; в противном случае возвращает false.
Если группа установлена с помощью beginGroup(), key рассматривается как относительный к этой группе.
Обратите внимание, что в реестре Windows и файлах INI ключи регистронезависимы, а в API CFPreferences в macOS и iOS ключи регистрозависимы. Чтобы избежать проблем с переносимостью, см. правила Синтаксис раздела и ключа.
См. также value() и setValue().
[static] QSettings::Format QSettings::defaultFormat()
Возвращает используемый по умолчанию формат файла для хранения настроек для конструктора QSettings(QObject *). Если формат по умолчанию не задан, используется QSettings::NativeFormat.
Эта функция была добавлена в Qt 4.4.
См. также 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().
bool QSettings::fallbacksEnabled() const
Возвращает true если резервные варианты включены; в противном случае возвращает false.
По умолчанию резервные варианты включены.
См. также setFallbacksEnabled().
QString QSettings::fileName() const
Возвращает путь, где хранятся настройки, записанные с помощью этого объекта QSettings.
В Windows, если формат QSettings::NativeFormat, возвращаемое значение — системный путь реестра, а не путь к файлу.
См. также isWritable() и format().
QSettings::Format QSettings::format() const
Возвращает формат, используемый для хранения настроек.
Эта функция была добавлена в Qt 4.4.
См. также defaultFormat(), fileName(), scope(), organizationName() и applicationName().
QString QSettings::group() const
Возвращает текущую группу.
См. также beginGroup() и endGroup().
QTextCodec *QSettings::iniCodec() const
Возвращает кодек, используемый для доступа к файлам INI. По умолчанию кодек не используется, поэтому возвращается указатель null.
Эта функция была добавлена в Qt 4.5.
См. также setIniCodec().
bool QSettings::isAtomicSyncRequired() const
Возвращает true если QSettings разрешено выполнять атомарную сохранение и загрузку (синхронизацию) настроек. Возвращает false если разрешено сохранять содержимое настроек непосредственно в файл конфигурации.
Значение по умолчанию true.
Эта функция была добавлена в Qt 5.10.
См. также setAtomicSyncRequired() и QSaveFile.
bool QSettings::isWritable() const
Возвращает true если настройки можно записать с помощью этого объекта QSettings; в противном случае возвращает false.
Одна из причин, по которой isWritable() может вернуть false, заключается в том, что QSettings работает с файлом только для чтения.
Предупреждение: Эта функция не является идеально надёжной, так как права доступа к файлам могут измениться в любой момент.
См. также fileName(), status() и sync().
QString QSettings::organizationName() const
Возвращает имя организации, используемое для хранения настроек.
Эта функция была добавлена в Qt 4.4.
См. также QCoreApplication::organizationName(), format(), scope() и applicationName().
[static] QSettings::Format QSettings::registerFormat(const QString &extension, QSettings::ReadFunc readFunc, QSettings::WriteFunc writeFunc, Qt::CaseSensitivity caseSensitivity = Qt::CaseSensitive)
Регистрирует пользовательский формат хранения. В случае успеха возвращает специальное значение Format, которое затем можно передать в конструктор QSettings. В случае неудачи возвращает InvalidFormat.
extension — это расширение файла, связанное с форматом (без точки).
Параметры readFunc и writeFunc — указатели на функции, которые читают и записывают набор пар ключ-значение. Параметр QIODevice для функций read и write всегда открывается в двоичном режиме (то есть без флага QIODevice::Text).
Параметр caseSensitivity определяет, чувствительны ли ключи к регистру. Это имеет значение при поиске значений с помощью QSettings. По умолчанию регистрозависимо.
По умолчанию, если вы используете один из конструкторов, работающих с именем организации и именем приложения, то используемые пути в файловой системе такие же, как для 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");
...
} Примечание: Эта функция является безопасной для потоков.
Эта функция была добавлена в Qt 4.1.
См. также setPath().
void QSettings::remove(const QString &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"] Обратите внимание, что если в одном из резервных расположений существует настройка с тем же ключом, то эта настройка будет видна после вызова 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 ключи нечувствительны к регистру, а в API CFPreferences на macOS и iOS ключи чувствительны к регистру. Чтобы избежать проблем с переносимостью, см. правила Синтаксис раздела и ключа.
См. также setValue(), value() и contains().
QSettings::Scope QSettings::scope() const
Возвращает область, используемую для хранения настроек.
Эта функция была добавлена в Qt 4.4.
См. также 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 Alternate Data Streams.
См. QSaveFile для получения дополнительной информации об этой функции.
Эта функция была добавлена в Qt 5.10.
См. также isAtomicSyncRequired() и QSaveFile.
[static] void QSettings::setDefaultFormat(QSettings::Format format)
Устанавливает значение по умолчанию для формата файла до заданного format, используемого для хранения настроек для конструктора QSettings(QObject *).
Если формат по умолчанию не установлен, используется QSettings::NativeFormat. Обратитесь к документации для конструктора QSettings, который вы используете, чтобы узнать, игнорирует ли он эту функцию.
Эта функция была добавлена в Qt 4.4.
См. также defaultFormat() и format().
void QSettings::setFallbacksEnabled(bool b)
Устанавливает флаг включения резервных копий в значение b.
По умолчанию резервные копии включены.
См. также fallbacksEnabled().
void QSettings::setIniCodec(QTextCodec *codec)
Устанавливает кодек для доступа к файлам INI (включая .conf файлы на Unix) в codec. Кодек используется для декодирования любых данных, считанных из файла INI, и для кодирования любых данных, записанных в файл. По умолчанию кодек не используется, и символы, отличные от ASCII, кодируются с использованием стандартных последовательностей эскейпов INI.
Предупреждение: Кодек должен быть установлен сразу после создания объекта QSettings до доступа к любым данным.
Эта функция была добавлена в Qt 4.5.
См. также iniCodec().
void QSettings::setIniCodec(const char *codecName)
Это перегруженная функция.
Устанавливает кодек для доступа к файлам INI (включая .conf файлы на Unix) в QTextCodec для кодировки, указанной в codecName. Типичные значения для codecName включают "ISO 8859-1", "UTF-8" и "UTF-16". Если кодировка не распознана, ничего не происходит.
Эта функция была добавлена в Qt 4.5.
См. также QTextCodec::codecForName().
[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 |
||
| Qt для встраиваемой Linux | NativeFormat, IniFormat | UserScope | $HOME/Settings |
| SystemScope | /etc/xdg |
||
| macOS и iOS | IniFormat | UserScope | $HOME/.config |
| SystemScope | /etc/xdg |
Пути по умолчанию для UserScope в Unix, macOS и iOS ($HOME/.config или $HOME/Settings) могут быть переопределены пользователем путём установки переменной среды XDG_CONFIG_HOME. Пути по умолчанию для SystemScope в Unix, macOS и iOS (/etc/xdg) могут быть переопределены при компиляции библиотеки Qt с помощью флага configure скрипта -sysconfdir (подробнее см. QLibraryInfo).
Установка путей для NativeFormat в Windows, macOS и iOS не имеет эффекта.
Предупреждение: Эта функция не влияет на существующие объекты QSettings.
Функция была добавлена в Qt 4.1.
См. также registerFormat().
void QSettings::setValue(const QString &key, const QVariant &value)
Устанавливает значение параметра key на value. Если key уже существует, предыдущее значение перезаписывается.
Обратите внимание, что в Windows реестре и INI-файлах ключи регистронезависимы, в то время как API CFPreferences в macOS и iOS чувствительны к регистру. Для избежания проблем с переносимостью см. правила Синтаксис раздела и ключа.
Пример:
QSettings settings;
settings.setValue("interval", 30);
settings.value("interval").toInt(); // returns 30
settings.setValue("interval", 6.55);
settings.value("interval").toDouble(); // returns 6.55 См. также value(), remove() и contains().
QSettings::Status QSettings::status() const
Возвращает код состояния, указывающий на первую ошибку, которая была встречена объектом QSettings, или QSettings::NoError, если ошибок не было.
Обратите внимание, что QSettings откладывает выполнение некоторых операций. По этой причине вы можете вызвать sync(), чтобы убедиться, что данные, сохранённые в QSettings, записаны на диск до вызова status().
См. также sync().
void QSettings::sync()
Записывает все несохранённые изменения в постоянное хранилище и перезагружает любые настройки, которые были изменены в это время другим приложением.
Эта функция вызывается автоматически из деструктора QSettings и циклом событий с регулярными интервалами, поэтому обычно вызывать её вручную не нужно.
См. также status().
QVariant QSettings::value(const QString &key, const QVariant &defaultValue = QVariant()) const
Возвращает значение для параметра key. Если параметр не существует, возвращает defaultValue.
Если значение по умолчанию не указано, возвращается значение по умолчанию QVariant.
Обратите внимание, что в Windows реестре и INI-файлах ключи регистронезависимы, в то время как API CFPreferences в macOS и iOS чувствительны к регистру. Для избежания проблем с переносимостью см. правила Синтаксис раздела и ключа.
Пример:
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 См. также setValue(), contains() и remove().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qsettings.html