Qt Q设置清楚,它有什么作用?

Qt Q设置清楚,它有什么作用?,qt,qsettings,Qt,Qsettings,文档中提到的QSettings::clear功能如下: 删除与此关联的主位置中的所有条目 QSettings对象 回退位置中的条目不会被删除 但这意味着什么?主要位置和后备位置是什么?主要位置取决于操作系统和您的设置。对于Windows,这是QSettings文档中的注册表等: 假设您已经创建了一个QSettings对象,其组织名为MySoft,应用程序名为starrunner。查找值时,最多会按该顺序搜索四个位置: Star Runner应用程序的用户特定位置 MySoft为所有应用程序提供

文档中提到的
QSettings::clear
功能如下:

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

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


但这意味着什么?主要位置和后备位置是什么?

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

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

  • 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();
如果使用其他值初始化
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.