QSettings 清除了,它有什么作用?

Nya*_*uko 5 qt qsettings

该文档将该QSettings::clear功能描述为:

删除与此 QSettings 对象关联的主要位置中的所有条目。

回退位置中的条目不会被删除。

但是,这是什么意思?主要位置和后备位置是什么???

Flo*_*dis 5

主要位置取决于操作系统和您的设置。对于 Windows,这是注册表等。来自以下文档QSettings

假设您已经创建了一个组织名称为 MySoft 且应用程序名称为 Star Runner 的 QSettings 对象。当您查找值时,最多会按顺序搜索四个位置:

  • Star Runner 应用程序的用户特定位置
  • MySoft 所有应用程序的用户特定位置
  • Star Runner 应用程序的系统范围位置
  • MySoft 所有应用程序的系统范围位置

主要位置是最具体的位置:通常是应用程序的用户特定位置。

您可以为所有用户/应用程序提供共享的默认值。但如果您致电,它们不会被删除clear()。仅清除用户和应用程序特定值。

例子

如果QSettings使用公司和应用程序名称或使用默认构造函数初始化对象,则主要值是应用程序用户特定的值。大多数应用程序都是这种情况。如果您只是使用默认构造函数创建对象,则使用(应用程序名称和组织名称)QSettings中的值。QApplication

QSettings settings("MySoft", "Star Runner");
settings.clear();
// or
QSettings settings(); // use the values from QApplication
settings.clear();
Run Code Online (Sandbox Code Playgroud)

如果使用其他值初始化QSettings对象,则可以选择另一个主要“存储”:

QSettings settings("MySoft");
settings.clear(); // clears values for whole company if possible.

QSettings settings(QSettings::SystemScope, "MySoft", "Star Runner");
settings.clear(); // clears system wide settings for the application.

QSettings settings(QSettings::SystemScope, "MySoft");
settings.clear(); // clears system wide settings for the company.
Run Code Online (Sandbox Code Playgroud)

最后三种情况很少见,而且没有多大意义。该应用程序还需要写入系统范围设置的权限。