如何将 QSetting::NativeFormat 转换为 QSetting::IniFormat?

How do I Convert a QSetting::NativeFormat to QSetting::IniFormat?

你好,我有一个 Mac OS X plist 文件(QSetting::NativeFormat),它是由一个应用程序生成的,现在我想把这个 plist 文件放在 Linux基于 OS 不支持它。所以我决定采用 INI 格式的文件。 QSetting::IniFormat 很容易阅读。但是我很困惑如何将 QSetting::NativeFormat 转换为 QSetting::IniFormat 。请帮助我。

只需复制所有键和值。

void setcpy(QSettings *dst, const QSettings &src) {
    for (const auto &key : src.allKeys())
        dst->setValue(key, src.value(key));
}

转换必须在 OS X 上完成,因为只有那里支持 plist 原生格式。您需要编写一些代码来读取一种格式的设置并将它们转储为另一种格式。您可以使用 QSettings::childGroupschildKeys 枚举设置。您可以让您的应用程序执行此操作,您可以将其放入您将手动调用一次的帮助程序应用程序中。

这对我来说很好。

    QSettings Source("/path/filename.plist",QSettings::NativeFormat);
    QSettings Destination("/path/filename.ini",QSettings::IniFormat);
    QStringList  allkeyList = Source.allKeys();
    for(int i=0;r<allkeyList.size();++i)
    {
        Destination.setValue(allkeyList[i], Source.value(allkeyList[i]));
    }