Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从IniFormat和UserScope创建的全局QSettings对象_C++_Windows_Qt_Qt4_Qsettings - Fatal编程技术网

C++ 从IniFormat和UserScope创建的全局QSettings对象

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

我正在尝试使用一个QSettings对象,该对象的IniFormat用于在应用程序启动时加载的UserScope设置。我将QSettings设置代码移动到一个单独的方法中,并从main()调用它,如以下代码段所示:

#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调用。