2015-06-19 32 views
0

當我在Linux SLES 11機器上使用下面的代碼時,.ini文件正在重新創建,因此我無法恢復我的設置。QSettings重寫.ini文件,因此無法恢復值

相同的代碼在Windows機器上正常工作。

Prb:我想最近在啓動窗口打開文件列表,以便用戶可以快速選擇。

void Window::saveRecentFileList() 
{ 
    QSettings settings(m_settingsPath, QSettings::NativeFormat); 
    settings.setValue("recentFiles/list", QVariant(m_recentFilesList)); 
} 

void Window::restoreRecentFileList() 
{ 
    QSettings settings(m_settingsPath, QSettings::NativeFormat); 
    m_recentFilesList = settings.value("recentFiles/list").toStringList(); 
} 
+0

'saveRecentFileList'後面調用'restoreRecentFileList'嗎? – vahancho

+0

@vahancho no在構造函數中我打電話restoreRecentFileList&析構函數我打電話saveRecentFileList – NDestiny

+0

你的代碼很好。問題可能在ini-file或其他代碼中。嘗試編寫一個簡單的測試應用程序。 – Amartel

回答

0

嘗試使用的QSettings::IniFormat代替QSettings::NativeFormat。在Windows上,您應該使用QSettings::IniFormat反正與特定的ini文件位置。 Linux使用INI文件作爲設定存儲其原生格式,但QSettings documentation認爲:

在所有平臺上,如果你想直接讀取INI文件,你可以 使用QSettings構造函數,一個文件名作爲第一個參數 並傳遞QSettings :: IniFormat作爲第二個參數。