为什么我不能在QSettings中存储QVariantMap?

时间:2018-10-12 10:57:04

标签: qt qt5 qmap qvariant qsettings

为什么是possible in Qt 5.2previously并以以下格式存储数据:

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 :(得分:2)

不要存储QSettings:这并不是要那样使用。每次更改设置时,都应使用QSettings的新实例。您的析构函数应如下所示:

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

QSettings是设置系统的临时句柄,其实例化很便宜。之所以泄漏它,是因为QPointer不会破坏任何东西:它不是拥有的指针。