【问题标题】:QSettings rewriting the .ini file, so not able to restore the valuesQSettings 重写 .ini 文件,因此无法恢复值
【发布时间】:2015-06-19 08:08:28
【问题描述】:

当我在 Linux SLES 11 机器上使用以下代码时,.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();
}

【问题讨论】:

  • 也许 restoreRecentFileListsaveRecentFileList 之后调用?
  • @vahancho no 在构造函数中我正在调用 restoreRecentFileList & 在析构函数中我正在调用 saveRecentFileList
  • 你的代码没问题。可能问题出在ini文件或其他代码中。尝试编写一个简单的测试应用。
  • 其他代码实际上很好,我打印 m_recentFilesList 并检查其是否按预期工作,但我观察到,文件是如何重新创建并因此丢失数据的。

标签: qt qsettings


【解决方案1】:

尝试使用QSettings::IniFormat 而不是QSettings::NativeFormat。在 Windows 上,您无论如何都应该使用带有特定 ini 文件位置的 QSettings::IniFormat。 Linux 使用 ini 文件作为其原生格式来存储设置,但 QSettings documentation 建议:

在所有平台上,如果您想直接读取 INI 文件,您可以 使用将文件名作为第一个参数的 QSettings 构造函数 并将 QSettings::IniFormat 作为第二个参数传递。

【讨论】:

    猜你喜欢
    • 2013-04-18
    • 2016-01-09
    • 2011-05-01
    • 2013-06-14
    • 2020-10-23
    • 2012-10-16
    • 2020-03-13
    • 1970-01-01
    • 2014-12-09
    相关资源
    最近更新 更多