C++ 从IniFormat和UserScope创建的全局QSettings对象
我正在尝试使用一个QSettings对象,该对象的IniFormat用于在应用程序启动时加载的UserScope设置。我将QSettings设置代码移动到一个单独的方法中,并从main()调用它,如以下代码段所示:C++ 从IniFormat和UserScope创建的全局QSettings对象,c++,windows,qt,qt4,qsettings,C++,Windows,Qt,Qt4,Qsettings,我正在尝试使用一个QSettings对象,该对象的IniFormat用于在应用程序启动时加载的UserScope设置。我将QSettings设置代码移动到一个单独的方法中,并从main()调用它,如以下代码段所示: #include <QDebug> #include <QSettings> #include <QStringList> void loadSettings() { qDebug() << "[BEGIN] loadSett
#include <QDebug>
#include <QSettings>
#include <QStringList>
void loadSettings()
{
qDebug() << "[BEGIN] loadSettings()";
QCoreApplication::setOrganizationName("Org");
QCoreApplication::setApplicationName("App");
QSettings settings(QSettings::IniFormat,
QSettings::UserScope,
"Org",
"App");
settings.setValue("TheAnswer", "42");
QStringList keys = settings.allKeys();
qDebug() << "Loaded " << keys.size() << " keys.";
qDebug() << "[END] loadSettings()";
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
loadSettings();
QSettings settings;
QStringList keys = settings.allKeys();
qDebug() << "Settings has " << keys.size() << " keys.";
// Empty
qDebug() << settings.value("TheAnswer").toString();
return a.exec();
}
#包括
#包括
#包括
void loadSettings()
{
qDebug()我认为问题在于默认格式是QSettings::NativeFormat
,而不是您正在使用的QSettings::IniFormat
我注意到有一个静态的QSettings::setDefaultFormat()
函数,所以我会尝试将它添加到loadSettings()函数中:
QSettings::setDefaultformat( QSettings::IniFormat );
另外,一旦设置了应用程序/组织和默认格式,我认为不需要在加载设置(
)中将任何参数传递给QSetting
s构造函数函数。您的建议解决了我的问题。我很惊讶我原来的建议不起作用,因为传递QSettings::IniFormat会导致它使用。构造函数会使QSettings对象的实例使用IniFormat,但如果通知QSettings的其他实例也使用它,那么您需要使用它t setDefaultFormat调用。