QSettings和“foldered”,非平坦输出

时间:2011-04-11 18:37:29

标签: qt

应用程序的注册表根目录可以是一个树状结构,其中包含"文件夹"和"节点"。 mac上的pFile可以有内部词典,就像文件夹一样。无论我在QSettings做什么都是平的,即使我使用了一个小组。有没有一个API可以让我'#34;创建一个文件夹"这将在Windows中转换为注册表'文件夹',以及pfile上的新词典?

1 个答案:

答案 0 :(得分:1)

没有发布方式来执行您描述的内容。但您可以在QSettings中存储Qt容器类型,如QList和QMap。生成的注册表或plist将不是您想要的,但它可以满足您的需求。当然,除非您希望注册表或plist与其他应用程序兼容,否则不会以这种方式安排其设置。

修改

实际上,经过一些测试,在Mac QSettings上确实使用plist natives作为标准类型。你只需要把它们放在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);

以上代码生成以下plist条目:

<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>

因此,只要将值转换为QVariant,QSettings就会尝试在plist中使用本机类型。我不太了解Windows注册表,知道它是否在那里做同样的事情。