Почему я не могу хранить QVariantMap в QSettings? - PullRequest
0 голосов
/ 12 октября 2018

Почему это было возможно в Qt 5.2 и ранее и сохраняло данные в следующем формате:

key=@Variant(\0\0\0\b\0\0\0)

, но теперь есть проблема в Qt 5.11 ?!Следующий код

QVariantMap projectsMap;
for (auto project : projects)
    projectsMap.insert(key, value);

settings->setValue("Group/projects", projectsMap);

выполняется правильно, но ничего не сохраняет в INI-файл.

qRegisterMetaTypeStreamOperators<QVariantMap>("QVariantMap");

тоже не помогает.Как хранить это, в чем здесь проблема?

1 Ответ

0 голосов
/ 12 октября 2018

Не храните QSettings: он не предназначен для использования таким образом.Вы должны использовать новый экземпляр QSettings каждый раз, когда вы меняете настройки.Ваш деструктор должен выглядеть следующим образом:

MyClass::~MyClass() {
  QSettings s;
  s.setValue(kFoo, this->m_bar);
  …
}

QSettings - эфемерный дескриптор системы настроек, его создание дешево.Вы пропускаете его, потому что QPointer ничего не разрушает: это не владеющий указатель.

...