Я пытаюсь использовать объект 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();
}
В результате получается:
[НАЧАЛО] loadSettings ()
Загружен 1 ключ.
[END] loadSettings ()
Настройки имеет 0 клавиш.
""
Глядя на документацию для QSettings , говорится, что использование QCoreApplication для задания имени организации и имени приложения позволит использовать удобный метод создания QSettings из любой точки приложения, поэтому я понимаю является то, что фрагмент кода должен иметь доступ к значению, хранящемуся с ключом "TheAnswer", который был загружен методом loadSettings (). Тем не менее, когда я создаю новый объект QSettings, используя удобный метод, у него нет пар ключ / значение. Я проверил, что INI-файл создан и содержит правильные данные. Чего мне не хватает?