QSettings - 读取INI文件

时间:2013-04-24 23:18:36

标签: c++ qt ini qsettings

我创建一个INI文件,然后尝试阅读它。没有编译错误,文件在那里,但我没有收到我的QStringList

中的任何数据
QFile checkConfig(configPath);
    if(checkConfig.exists())
    {
        QSettings* settings = new QSettings(configPath, QSettings::IniFormat);
        settings->beginGroup("General");
        const QStringList childKeys = settings->childKeys();
        QStringList values;
        foreach (const QString &childKey, childKeys)
            values << settings->value(childKey).toString();
        settings->endGroup();
        QString test = configPath;
        int a;
    }

这是我的INI文件

[General]
InterviewPath=C:/1234

3 个答案:

答案 0 :(得分:3)

不要使用settings-&gt; beginGroup(“常规”);

        QCoreApplication a(argc, argv);
    QSettings* settings = new QSettings("d:/a.ini", QSettings::IniFormat);
  //  settings->beginGroup("General");
    const QStringList childKeys = settings->childKeys();
    QStringList values;
    foreach (const QString &childKey, childKeys)
        values << settings->value(childKey).toString();
   // settings->endGroup();
    qDebug()<<values;

答案 1 :(得分:3)

问题源于INI未正确创建。

QSettings settings(configPath, QSettings::IniFormat);
    settings.beginGroup("/General");
    settings.setValue("/InterviewPath", interviewPath);
    settings.endGroup();

答案 2 :(得分:1)

   QSettings* settings = new QSettings(configPath, QSettings::IniFormat);
   settings.sync(); // !!!

如果你的第一个电话会在一些事件处理后运行 - 那么一切都会好的。但是如果你想直接打开.ini文件并以相同的方法使用它 - 那么你应该强制同步。阅读qt docs以获取有关sync()的更多信息。