2011-04-08 54 views
0

我的應用程序的mac版本剛剛開始打破它的全屏和正常佈局,我使用QSettings保存和恢復。即使我的應用程序的舊版本現在正在爲我的客戶打球。在跨平臺環境中,QSettings中存儲數據需要安全嗎?

我只是在谷歌上搜索類似的東西時,我發現其中包含了一個有趣的線上錯誤報告:

QSettings s; 
restoreState(s.value(QString::fromLocal8Bit("state")).toByteArray()); 

當保存到計算機的plist的或Windows註冊表做我必須格式化這個fromLocal8bit數據( )?

http://bugreports.qt-project.org/browse/QTBUG-8631
http://bugreports.qt-project.org/secure/attachment/13400/main.cpp

回答

1

這所編碼的數據,它只是字面的 「狀態」。如果使用QByteArray或QString ,則值將被正確編碼和解碼。 QString :: fromLocal8Bit()部分用於將源文件中的字符串文字轉換爲unicode字符串。在源文件中堅持使用ASCII是一種很好的做法,因爲其他編碼(如UTF-8)通常不適用於所有編譯器,特別是MSVC。

要文字轉換爲QString的我會建議使用QLatin1String:

QLatin1String("state") 

fromLocal8Bit()嚴格地說假的,因爲當地的8位編碼無關與源文件編碼,其中文字來自。 但是由於「狀態」不包含任何非ASCII字符,反正也不重要。