首页 > 解决方案 > 在哪里可以找到 macOS 上的 QSettings

问题描述

所以我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。

标签: qtsettingspreferencesqsettings

解决方案


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

killall -u $USER cfprefsd

或者你可以重启你的电脑...

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

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

推荐阅读