Qt 如何使用QSettings加载不同的设置

Qt 如何使用QSettings加载不同的设置,qt,qsettings,Qt,Qsettings,我有一个Qt应用程序,它需要能够从多个设置文件中加载,以便以不同的方式运行。例如,假设我的应用程序可以支持多种变体,VAR1、VAR2、VAR3。。。我的一个菜单项允许我加载设置。目前,我使用一个QSettings对象来实现这一点,它工作得很好。但是现在我想实现一个不同的变体。我希望从预配置的设置文件加载,而不是手动设置20个或更多设置 据我所知,QSettings不允许我更改源代码。我查看了静态方法QSettings::setPath,但在实例化QSettings对象之前只能执行一次 我的希望

我有一个Qt应用程序,它需要能够从多个设置文件中加载,以便以不同的方式运行。例如,假设我的应用程序可以支持多种变体,VAR1、VAR2、VAR3。。。我的一个菜单项允许我加载设置。目前,我使用一个QSettings对象来实现这一点,它工作得很好。但是现在我想实现一个不同的变体。我希望从预配置的设置文件加载,而不是手动设置20个或更多设置

据我所知,QSettings不允许我更改源代码。我查看了静态方法QSettings::setPath,但在实例化QSettings对象之前只能执行一次

我的希望是创造方法来: 1-加载出厂默认值 2-使用用户指定的名称保存用户设置文件 3-按名称调用用户设置文件


如果可能的话,我希望不必重写QSettings来满足我的需要。

您是否尝试过像INI文件一样访问QSettings?它允许您设置INI文件的位置

 QSettings settings("/home/petra/misc/myapp.ini",
                    QSettings::IniFormat);

您是否尝试过像INI文件一样访问QSettings?它允许您设置INI文件的位置

 QSettings settings("/home/petra/misc/myapp.ini",
                    QSettings::IniFormat);

其中一个
QSettings
构造函数采用文件名:

QSettings::QSettings (const QString& fileName,
                      Format format, 
                      QObject *parent = 0);
只需使用它来创建所需数量的
QSettings
实例:

QSettings s1("path1.ini", QSettings::IniFormat);
QSettings s2("path2.ini", QSettings::IniFormat);

如果需要在它们之间进行复制,您可以查看
QSettings::allKeys()
并获取值。

其中一个
QSettings
构造函数具有文件名:

QSettings::QSettings (const QString& fileName,
                      Format format, 
                      QObject *parent = 0);
只需使用它来创建所需数量的
QSettings
实例:

QSettings s1("path1.ini", QSettings::IniFormat);
QSettings s2("path2.ini", QSettings::IniFormat);

如果需要在它们之间进行复制,您可以查看
QSettings::allKeys()
并获取值。

问题是,一旦加载了设置,就无法轻松地加载其他设置文件。为什么不呢?就像Dave Mateer的回答一样。问题是一旦加载设置,就没有简单的方法可以加载不同的设置文件。为什么不呢?就像戴夫·马特尔的回答一样。