LINUX.ORG.RU

Qt QSettings, boost program_options, inilib, libini.

QSettings хранит настройки там, где заповедует freedesktop — это ценная фича. Насчёт трёх других не уверен.

quiet_readonly ★★★★
()
Последнее исправление: quiet_readonly (всего исправлений: 1)

libconfig как бы.

boost::spirit очень сильно помогает при велосипедостроительстве.

nanoolinux ★★★★
()
Ответ на: комментарий от deterok

Конструктор QSettings, обсуждение на opennet.

Может работать с группами настроек, ставит в соответствие уникальный (для данного приложения) ключ и QVariant. Можно хранить вообще произвольные вещи вроде ширины колонок таблицы или введённого в поле текста, чтобы перезапуск приложения для пользователя не имел последствий. Выглядит как-то так:

void TodoOutputTreeView::saveDisplaySettings()
{
    QSettings *settings = Core::ICore::settings();
    settings->beginGroup(QLatin1String(Constants::SETTINGS_GROUP));
    settings->setValue(QLatin1String(Constants::OUTPUT_PANE_TEXT_WIDTH),
                       columnWidth(Constants::OUTPUT_COLUMN_TEXT));
    settings->setValue(QLatin1String(Constants::OUTPUT_PANE_FILE_WIDTH),
                       columnWidth(Constants::OUTPUT_COLUMN_FILE));
    settings->endGroup();
}

Но на Windows по дефолту использует реестр, так что для хранения больших объёмов данных на оффтопе можно передавать в конструктор опцию QSettings::IniFormat.

quiet_readonly ★★★★
()

libconfig еще.

Еще можно встроить Lua и получить скриптуемые конфиги :)

annulen ★★★★★
()
Ответ на: комментарий от quiet_readonly

QSettings хранит настройки там, где заповедует freedesktop — это ценная фича.

Пффф… Тоже мне фича. Реализация спецификаций F.D.O. — дело десятка строк. Кстати XDG_DATA_HOME там как-то странно реализована, все хранится не в ~/.local/share а в ~/.local/share/data/. Ну и опять же непонятно проверяет ли он переменные XDG_* или просто захаркодили в него пути по умолчанию.

fat_angel ★★★★★
()
Ответ на: комментарий от fat_angel

Пффф… Тоже мне фича. Реализация спецификаций F.D.O. — дело десятка строк

Угу, а за реализацию всех спек F.D.O в отдельно взятой программе придётся заплатить программисту пару-сотку баксов. За реализацию спек POSIX, Linux Foundation и других ещё пару тысячонок. А за поиск нереализованных спек — ещё тысячи в период поддержки софта. Потери пользователей, не любящих некачественный софт, могут выйти ещё больше.

Qt по умолчанию, без всяких трудозатрат соблюдает множество соглашений и хигов, и это бесценно.

quiet_readonly ★★★★
()
Ответ на: комментарий от Dragon59

Допустим не целую

В линупсе о таком не знают; ну это больше от того, что майнтейнеры говноеды :3

anonymous
()
Ответ на: комментарий от quiet_readonly

Qt по умолчанию, без всяких трудозатрат соблюдает множество соглашений и хигов

Вот только порой делает он это хреново. Пример с base directory я уже привел, icon theme работающая только в гномокде то же тот еще лооол.

fat_angel ★★★★★
()
Ответ на: комментарий от quiet_readonly

Угу, а за реализацию всех спек F.D.O

Ну и потом речь шла только про base directory, что там еще ты собрался реализовывать на «пару-сотку баксов»?

fat_angel ★★★★★
()

Если формат конфигов ещё не утвержден/задан, то JSON же.

ivanzoid
()
Ответ на: комментарий от fat_angel

Не вижу вашего патча, отвергнутого разработчиками. Вот покажете — тогда смейтесь над Qt. Пока что смешны вы.

quiet_readonly ★★★★
()
Ответ на: комментарий от anonymous

В линупсе о таком не знают; ну это больше от того, что майнтейнеры говноеды :3

Ну в линупсе может и не знают, а в дистрибутивах GNU/Linux - вполне

Begemoth ★★★★★
()

Самый гибкий конфиг - код на скриптовом языке. Т.к. проект на Qt, то можно взять оттуда и ECMAScript-движок. В качестве альтернативы можно рассмотреть SpiderMonkey от Mozilla и V8 от Google.

illy
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.