2013-11-25 41 views
4

在我的程序中,我有一個使用方便的QSettings類創建,編輯和存儲的Microsoft INI樣式設置/配置文件,但用戶可以使用程序本身或她想要的任何文本編輯器手動編輯此文件,如geditvim 。鍵=值對的顯示順序非常重要。問題是每當我嘗試在關閉時存儲更改時,鍵=值對的順序更改爲隨機順序,並且似乎不可能阻止QSettings對其進行更改。爲了澄清這裏是一個配置文件示例:如何停止QSettings在設置文件中改變key = value對的順序?

[AlarmGroup1] 
DateTimeNotInitialized=1 
DateTimeStampError=2 
ParametersMissingOrInconsistent=3 
NotInitialized=4 
FlashMemoryFatalError=5 
NotIdentified=6 

其更改爲:

[AlarmGroup1] 
ParametersMissingOrInconsistent=3 
DateTimeNotInitialized=1 
DateTimeStampError=2 
NotInitialized=4 
FlashMemoryFatalError=5 
NotIdentified=6 

是否有可能避免的順序變化?爲什麼Qsettings的行爲如此?

回答

1

QSettings的行爲像這樣,因爲它設計要解決的問題是保存/檢索單個鍵/值對,而不是有序的對列表。

爲了解決這個問題,你將需要:

+0

您測試了最後一個選項嗎? – Barracuda

+0

恐怕不行,我去了第一個選擇。 – Bigwave

+0

我改用了SQLite數據庫。訂單在表格中保持不變,具有非常好的性能和安全性。使用你提到的第三個選項,我想我們可以有一個讀寫功能在'SQLite'數據庫文件上執行。我不再爲此工作,但你的答案聽起來似乎合理,所以我會接受它。 – Barracuda

相關問題