Qt QSettings和;折叠的“;,非平坦输出

Qt QSettings和;折叠的“;,非平坦输出,qt,Qt,应用程序的注册表根可以是带有“文件夹”和“节点”的树状结构。mac上的pFile可以有类似于文件夹的内部字典。无论我从QSettings做什么,都是平坦的,即使我使用一个组。是否有一个API可以让我“创建一个文件夹”,在windows中将其转换为注册表“文件夹”,并在pfile上创建一个新词典?没有发布方法来完成您描述的操作。但您可以只在QSettings中存储QList和QMap等Qt容器类型。生成的注册表或plist并不完全是您想要的,但它服务于您想要完成的任务。当然,除非您希望注册表或pl

应用程序的注册表根可以是带有“文件夹”和“节点”的树状结构。mac上的pFile可以有类似于文件夹的内部字典。无论我从QSettings做什么,都是平坦的,即使我使用一个组。是否有一个API可以让我“创建一个文件夹”,在windows中将其转换为注册表“文件夹”,并在pfile上创建一个新词典?

没有发布方法来完成您描述的操作。但您可以只在QSettings中存储QList和QMap等Qt容器类型。生成的注册表或plist并不完全是您想要的,但它服务于您想要完成的任务。当然,除非您希望注册表或plist与其他应用程序兼容,而不是以这种方式排列它们的设置

编辑

事实上,经过一些测试,在macqsettings上确实使用plist本地语言作为标准类型。你只需要把它们放在QVariant中。例如:

QList<QVariant> array;
array << 1 << 2 << "3";
QMap<QString, QVariant> list;
list["one"] = 1;
list["two"] = "2";
list["3"] = array;
QSettings().setValue("somelist", list);
QList数组;

数组在我看来似乎很奇怪,在功能上类似于树的元素,比如pFile或registry,QSettings将不能提供除flat之外的任何支持。我可以住在公寓里,技术上来说,它只是。。。好吧,糟透了。即使有了“文件夹”功能,你仍然需要自己去挖掘这些小节。这两种方式对代码都没有影响。还可以使用QSettings构造类似路径的键。再说一次,除非你需要与其他应用程序交换你的首选项/设置,否则我看不出有什么问题。但是我如何从QSettings生成“字典”?这有可能吗?如果这就是你想要的,QMap就像一本CFDictionary。要在QMap中存储多个类型,请使用QVariant作为值。我的意思是,我希望我保存的plist文件将具有新生成的字典,因为我使用QSettings的方式,因为我命令以编程方式在那里创建这些新的“文件夹”。
<key>somelist</key>
<dict>
    <key>3</key>
    <array>
        <array>
            <integer>1</integer>
            <integer>2</integer>
            <string>3</string>
        </array>
    </array>
    <key>one</key>
    <integer>1</integer>
    <key>two</key>
    <string>2</string>
</dict>