是否可以序列化QSettings然后恢复它们?

时间:2017-07-06 11:17:36

标签: c++ qt qsettings

我想通过QSetting保存的设置通过应用程序的两个实例传递,例如通过套接字。

我在官方文档中看不到任何功能。我读过的唯一内容就是这篇文章

Save Configuration Settings to XML file in QT?

但我不想将设置保存在XML文件中,例如在Windows中我想继续使用注册表。

我只想收集所有设置,并通过套接字传递它们。并且接收器可以检查设置并最终用接收的设置替换它自己的设置。

好吧,我想我可以使用QSettings :: allKeys()做一些类似的事情,检查所有值,转换为字符串等等......但是你知道Qt中是否有一些本机函数已经实现了吗? / p>

感谢大家提前

1 个答案:

答案 0 :(得分:2)

我找到的最佳解决方案:

从QSettings

创建QMap
QMap<QString, QVariant> keysValuesPairs;
QStringList keys = settings.allKeys();
QStringListIterator it(keys);
while ( it.hasNext() )
{
    QString currentKey = it.next();
    keysValuesPairs.insert(currentKey, settings.value(currentKey));
}

然后将其写入带有该功能的QJson中(参见官方文档http://doc.qt.io/qt-5/qjsonobject.html

QJsonObject :: fromVariantMap

然后在另一方用

恢复它

QJsonObject :: toVariantMap()

并重写设置

for ( int i = 0; i < keys.size(); i++ )
{
    settings.setValue( keys.at(i), keysValuesPairsMap.value(keys.at(i)) );
}