为什么我不能在 QSettings 中存储 QVariantMap?
Why I can't store QVariantMap in QSettings?
为什么它是 possible in Qt 5.2 and previously 并以下列格式存储数据:
key=@Variant([=10=][=10=][=10=]\b[=10=][=10=][=10=])
但是 Qt 5.11 现在有问题吗?!以下代码
QVariantMap projectsMap;
for (auto project : projects)
projectsMap.insert(key, value);
settings->setValue("Group/projects", projectsMap);
正确执行,但不向 ini 文件存储任何内容。
qRegisterMetaTypeStreamOperators<QVariantMap>("QVariantMap");
也无济于事。这个怎么存储,这里有什么问题?
不要存储 QSettings
:不应该那样使用。每次更改设置时都应该使用 QSettings
的新实例。您的析构函数应如下所示:
MyClass::~MyClass() {
QSettings s;
s.setValue(kFoo, this->m_bar);
…
}
QSettings
是设置系统的临时句柄,它的实例化很便宜。你泄漏它是因为 QPointer
不会破坏任何东西:它不是一个拥有指针。
为什么它是 possible in Qt 5.2 and previously 并以下列格式存储数据:
key=@Variant([=10=][=10=][=10=]\b[=10=][=10=][=10=])
但是 Qt 5.11 现在有问题吗?!以下代码
QVariantMap projectsMap;
for (auto project : projects)
projectsMap.insert(key, value);
settings->setValue("Group/projects", projectsMap);
正确执行,但不向 ini 文件存储任何内容。
qRegisterMetaTypeStreamOperators<QVariantMap>("QVariantMap");
也无济于事。这个怎么存储,这里有什么问题?
不要存储 QSettings
:不应该那样使用。每次更改设置时都应该使用 QSettings
的新实例。您的析构函数应如下所示:
MyClass::~MyClass() {
QSettings s;
s.setValue(kFoo, this->m_bar);
…
}
QSettings
是设置系统的临时句柄,它的实例化很便宜。你泄漏它是因为 QPointer
不会破坏任何东西:它不是一个拥有指针。