2011-04-11 26 views
0

應用程序的註冊表根目錄可以是具有「folders」和「nodes」的樹狀結構。 Mac上的pFile可以具有類似文件夾的內部字典。無論我從QSettings做什麼都是平坦的,即使我使用了一個組。有沒有一個API讓我「創建一個文件夾」,將Windows翻譯成註冊表'文件夾',以及一個pfile上的新字典?QSettings和「foldered」,非平坦輸出

回答

1

有沒有發佈的方式來做你所描述的。但是您可以在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註冊表不太瞭解,不知道它是否也一樣。

+0

對我來說,似乎很奇怪的是,像它們的功能中的樹狀元素,比如pFile或註冊表,QSettings將無法爲平面以外的任何其他功能提供支持。在技​​術上,我可以與平坦的生活在一起,只是......好吧,糟透了。 – JasonGenX 2011-04-11 19:02:43

+0

即使使用「文件夾」工具,您仍然必須自己挖掘子部分。代碼的任何一種方式都沒有區別。你也可以用QSettings構造類似路徑的鍵。同樣,除非您需要與其他應用程序交換您的偏好/設置,否則我不會看到問題。 – 2011-04-11 20:19:29

+0

但是我怎樣才能從QSettings生成一個「字典」?那可能嗎? – JasonGenX 2011-04-13 14:32:01