QSettings: можно ли отключить группы?

Я использую QSettings для записи файла .ini, который будет действовать как файл конфигурации моих приложений. Есть всего лишь одна проблема:

QSettings добавляет имя группы [General] в начало файла.

Я настроил файл так:

QSettings settings(QApplication::applicationDirPath() + fileName, QSettings::IniFormat);

и напишите ему так:

settings.setValue("some_setting", theNumber);

Однако программа, которой я в конечном итоге передаю эти данные, не может работать с тегом [General]. Хотя для меня, безусловно, есть возможность вручную удалить [General] из файла, мне интересно, можно ли заставить QSettings прекратить это делать.

Я подозреваю, что поведение связано с указанием QSettings::IniFormat, Тем не менее, я не вижу никаких других опций, которые бы указывали прекратить указывать группы.

Есть идеи, как я могу это сделать?

0

Решение

Формат файла .ini является стандартом де-факто, основанным на реализации Microsoft из Windows. Требуется наличие разделов.

Какое бы приложение вы не передавали файл, на самом деле не реализует .ini формат файла, но что-то еще.

Скорее всего, вы не должны использовать QSettings на всех, но реализовать функциональность вручную. Это не должно быть проблемой, так как вы делаете это только для того, чтобы «подать» данные на какой-то другой программный продукт. Вам не нужно читать это обратно. Вы можете хранить свои настройки в обычном QSettings, а затем экспортировать их в текстовый файл для просмотра этого приложения.

4

Другие решения

Пришло время написать свой собственный формат файла QSettings.

«формат файла» — это пара двух методов с подписями:

bool readXmlFile(QIODevice &device, QSettings::SettingsMap &map);
bool writeXmlFile(QIODevice &device, const QSettings::SettingsMap &map);

надо заполнить map от deviceво-вторых должен сбрасывать map в device, Вы можете использовать там все, что захотите — XML, обычные текстовые файлы без [general] группа и т. д.

После этого вы должны зарегистрировать свой новый блестящий формат с QSettings::registerFormat функция.

Вот документация: http://qt-project.org/doc/qt-5/qsettings.html#registerFormat

удачи.

3

По вопросам рекламы [email protected]