Используем QSettings для хранения настроек приложения Qt

Решили сделать так, чтобы ваше приложение сохраняло свои настройки в ходе работы и использовало их в дальнейшем? Я предлагаю научится это делать при помощи консольного Qt приложения…

Создадим его в Qt Creator..
Перед использованием необходимо подключить библиотеку QSettings:

#include <QSettings>

Теперь можно создать объект настроек Qt:

QSettings *settings = new QSettings("settings.conf",QSettings::NativeFormat);

В качестве параметров указывается имя файла с настройками и их формат. Возможны также такие варианты:

QSettings ( const QString & organization, const QString & application = QString(), QObject * parent = 0 )
QSettings ( Scope scope, const QString & organization, const QString & application = QString(), QObject * parent = 0 )
QSettings ( Format format, Scope scope, const QString & organization, const QString & application = QString(), QObject * parent = 0 )
QSettings ( const QString & fileName, Format format, QObject * parent = 0 )

В нашем случае используется последний вариант.

QSettings::NativeFormat — самый «удобный» вариант хранения настроек. Для Windows — реестр, unix — текстовый файл…
QSettings::IniFormat — хранить в файле ini.

Я использую linux, так что хранить настройки в текстовом файле, считаю приемлемым вариантом…
Теперь посмотрим как добавлять и читать настройки.
Для установки настроек используется метод setValue:

settings->setValue("section/size", value);

Таким образом будет установлен такой синтаксис файла настроек:

[section]
size=value

Как видите до знака «/» указывается секция, а после него параметр и значение..
Для записи настроек в файл:

settings->sync();

Для считывания вам понадобится открыть создать объект с настройками по вышеуказанному методу и воспользоваться методом value:

settings->value("section/size");

Будет возвращено значение из файла настроек. Возможен также вариант со стандартным значением:

settings->value("section/size", default);

Таким образом, если значение не установлено в файле настроек, будет возвращён default.
Для примера можно создать вот такую программу:

#include <QtCore/QCoreApplication>
#include <QSettings>
#include <QDebug>

int main(int argc, char *argv[]){
    QCoreApplication a(argc, argv);

    QSettings *settings = new QSettings("settings.conf",QSettings::NativeFormat);
    settings->setValue("settings/value1",1);  //устанавливаем значение value=1
    settings->sync(); //записываем настройки

    /* открываем файл с настройками для считывания */
    QSettings *settings2 = new QSettings("settings.conf",QSettings::NativeFormat);
    qDebug() << settings2->value("settings/value1",5).toInt();  //выводим на экран настройки из файла, если там ничего нет - 5
    return a.exec();
}

Будет сгенерирован следующий файл настроек:

[settings]
value1=1

В нашем случае будет выведено значение  — 1
На этом всё..

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий