0
應用程序的註冊表根目錄可以是具有「folders」和「nodes」的樹狀結構。 Mac上的pFile可以具有類似文件夾的內部字典。無論我從QSettings做什麼都是平坦的,即使我使用了一個組。有沒有一個API讓我「創建一個文件夾」,將Windows翻譯成註冊表'文件夾',以及一個pfile上的新字典?QSettings和「foldered」,非平坦輸出
應用程序的註冊表根目錄可以是具有「folders」和「nodes」的樹狀結構。 Mac上的pFile可以具有類似文件夾的內部字典。無論我從QSettings做什麼都是平坦的,即使我使用了一個組。有沒有一個API讓我「創建一個文件夾」,將Windows翻譯成註冊表'文件夾',以及一個pfile上的新字典?QSettings和「foldered」,非平坦輸出
有沒有發佈的方式來做你所描述的。但是您可以在QSettings中存儲Qt和QMap之類的Qt容器類型。由此產生的註冊表或plist不會完全符合您的要求,但它可以滿足您的要求。當然,除非您希望註冊表或plist與其他應用程序兼容,否則不如此方式安排其設置。
編輯
事實上,經過一些測試,在Mac QSettings做使用標準類型的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);
上面的代碼產生以下的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註冊表不太瞭解,不知道它是否也一樣。
對我來說,似乎很奇怪的是,像它們的功能中的樹狀元素,比如pFile或註冊表,QSettings將無法爲平面以外的任何其他功能提供支持。在技術上,我可以與平坦的生活在一起,只是......好吧,糟透了。 – JasonGenX 2011-04-11 19:02:43
即使使用「文件夾」工具,您仍然必須自己挖掘子部分。代碼的任何一種方式都沒有區別。你也可以用QSettings構造類似路徑的鍵。同樣,除非您需要與其他應用程序交換您的偏好/設置,否則我不會看到問題。 – 2011-04-11 20:19:29
但是我怎樣才能從QSettings生成一個「字典」?那可能嗎? – JasonGenX 2011-04-13 14:32:01