【问题标题】:QSettings - reading INI fileQSettings - 读取 INI 文件
【发布时间】:2013-04-18 16:54:18
【问题描述】:

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

【问题讨论】:

    标签: c++ qt ini qsettings


    【解决方案1】:

    问题源于未正确创建 INI。

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

    【讨论】:

    • @Volomike 这么久了,我不记得对不起朋友 =)
    【解决方案2】:
       QSettings* settings = new QSettings(configPath, QSettings::IniFormat);
       settings.sync(); // !!!
    

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

    【讨论】:

      【解决方案3】:

      不要使用设置->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;
      

      【讨论】:

      • 查看附件 .ini 文件的内容。有“General”组。
      • 它似乎没有获取密钥的值,但它确实返回了密钥对的一半
      猜你喜欢
      • 2015-11-17
      • 2013-10-15
      • 2017-05-06
      • 2016-01-09
      • 2011-05-01
      • 2020-10-23
      • 2015-10-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多