Страницы

Поиск по вопросам

вторник, 18 июня 2019 г.

Qt 5 - QSettings, не пишется ini-файл

Приветствую. Есть код: сериализация настроек приложения, сделанных как QProperty, в ini файл(потому что мне сказали, что реестр - плохой стиль).
Settings = new QSettings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), QApplication::applicationName());
QString path = Settings->fileName();
и чуть позже:
const QMetaObject *metaobject = metaObject(); int count = metaobject->propertyCount(); for (int i = 0; iproperty(i); const char *name = metaproperty.name(); QVariant value = property(name);
QString Key = QString(name);
Settings->setValue(Key, value); }
В переменной path путь к ini-файлу:
path = C:/Users/ILIA/AppData/Roaming/HighwaySoftware/Vesta 2016.ini
От русских букв в путях я ушел давно. Файл не создаётся. Думал, нет прав на запись, запустил из-под Visual Studio 2013, запущенной от администратора - нет результата. Чтобы вы не думали, что файл я не нашёл, я его искал через Everything c запросом:
*vesta*.ini
где vesta - имя приложения, его нет. В чём дело? В реестр вся информация пишется(правда, не всегда, я это не поборол).


Ответ

Данные сохраняются при вызове метода sync, а также при вызове деструктора и по интервалу в event loop. Вы создаёте QSettings в куче и, вероятно, сразу завершаете приложение, не удаляя объект.
Дебаггер останавливает все потоки, поэтому если вы после записи настроек замораживаете приложение, то настройки не успевают сохраниться.

Комментариев нет:

Отправить комментарий