【问题标题】:Where to find QSettings on macOS在哪里可以找到 macOS 上的 QSettings
【发布时间】:2020-04-01 19:31:22
【问题描述】:

所以我使用QSettings 来存储我的偏好,根据https://doc.qt.io/qt-5/qsettings.html#platform-specific-notes 有几个位置实际存储了它。

我使用的是 macOS 10.14,但我在 $HOME/Library/Preferences/org.mycomp.myapp.plist 中找到了设置(上面的链接表明这应该适用于 macOS 10.2/10.3)。

现在我可以通过打开看到该文件包含我最近的设置更改,但是,删除后,我的应用程序仍会加载设置。所以必须有第二个存储它的位置?但我似乎找不到它。

  1. $HOME/Library/Preferences/com.MySoft.Star Runner.plist - 不存在
  2. $HOME/Library/Preferences/com.MySoft.plist - 存在,已删除
  3. /Library/Preferences/com.MySoft.Star Runner.plist - 不存在
  4. /Library/Preferences/com.MySoft.plist - 不存在

对于 unix 变体:

  1. $HOME/.config/MySoft/Star Runner.conf - 不存在
  2. $HOME/.config/MySoft.conf - 不存在
  3. 对于 $XDG_CONFIG_DIRS 中的每个目录:/MySoft/Star Runner.conf - 不存在
  4. 对于 $XDG_CONFIG_DIRS 中的每个目录:/MySoft.conf - 不存在

那么设置还保存在哪里?!

在我的main.cpp 我有:

    QCoreApplication::setOrganizationName("Firstname Lastname");
    QCoreApplication::setOrganizationDomain("mycomp.org");
    QCoreApplication::setApplicationName("MyApp");

我使用QSettings 和默认构造函数。我正在使用 Qt 5.13.2。

【问题讨论】:

  • QSettings::fileName 应该告诉您文件实际保存和恢复的位置。
  • 它给了我$HOME/Library/Preferences/org.mycomp.myapp.plist - 我已经删除的文件。根据lsof,此文件未打开,也不存在(因为我已将其删除,但尚未存储任何新设置)。

标签: qt settings preferences qsettings


【解决方案1】:

因为 macOS Mavericks (10.9) 首选项被缓存以提高性能,所以他们说。当您删除 .plist 文件时,每次执行程序时它们仍在内存中。您需要使用以下命令清除首选项缓存:

killall -u $USER cfprefsd

或者您可以重新启动计算机...

如果您(和您的用户)对此感到厌烦,您可以考虑使用带有 QSettings 的 INI 文件,而不是原生 OS 格式:

QSettings("MyApp.ini", QSettings::IniFormat)

【讨论】:

  • 谢谢,确实感觉像是某种缓存。我会在下班后尝试,并在其工作时批准。已经谢谢了。
  • 它成功了,但是你有一个错字,它实际上是cfprefsd
  • 谢谢你。我已经为下一个寻找答案的人修复了它。
猜你喜欢
  • 2017-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-30
  • 2011-08-22
  • 2014-12-14
  • 2012-05-04
相关资源
最近更新 更多