QSettings清楚,它做什么?

时间:2015-05-26 12:23:15

标签: qt qsettings

该文件称QSettings::clear函数为:

  

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

     

不会删除后备位置中的条目。

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

1 个答案:

答案 0 :(得分:2)

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

  

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

     
      
  • 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.

这最后三个案例很少见,没有多大意义。此外,应用程序还需要具有写入系统范围设置的权限。