4

我创建了一个 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
4

3 回答 3

5

问题源于未正确创建 INI。

QSettings settings(configPath, QSettings::IniFormat);
    settings.beginGroup("/General");
    settings.setValue("/InterviewPath", interviewPath);
    settings.endGroup();
于 2013-04-25T20:41:22.620 回答
3

不要使用 settings->beginGroup("General");

        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;
于 2013-04-25T02:00:42.447 回答
2
   QSettings* settings = new QSettings(configPath, QSettings::IniFormat);
   settings.sync(); // !!!

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

于 2013-04-25T07:37:04.573 回答