Решили сделать так, чтобы ваше приложение сохраняло свои настройки в ходе работы и использовало их в дальнейшем? Я предлагаю научится это делать при помощи консольного 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
На этом всё..