Используем 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
На этом всё..

Просмотров:   25581