然木酥 2023-12-22 14:59 采纳率: 100%
浏览 13
已结题

QSetting读取ini文件

[数据1]
同学个数=5
同学1名称 = "张三",班级="1",性别="1"
同学2名称 = "李四",班级="1",性别="1"
同学3名称 = "王五",班级="1",性别="1"
C++的ini文件,各位朋友们有知道如何用QT框架的QSetting读取这个参数的吗,如果有遇到过同样这种奇怪的问题,谢谢解答。

  • 写回答

5条回答 默认 最新

  • 然木酥 2023-12-25 17:38
    关注

    皇天不负有心人,终于给我研究出来了,供大家参考,不过这个格式确实不太行,稍微改了下格式。
    [数据1]
    同学个数=5
    同学1名称 = "张三,班级=1,性别=1"
    同学2名称 = "李四,班级=1,性别=1"
    同学3名称 = "王五,班级=1,性别=1"

    
    std::string yxTable ="/数据"+std::to_string(i)+"/同学个数";
    m_YxCount = configIniRead->value(QString::fromLocal8Bit(yxTable.data())).toInt();
    qDebug()<<"m_YxCount="<<m_YxCount;
    for(int n=1;n<m_YxCount+1;n++)
    {
        yxArguStruct.Yx_Count[0]=m_YxCount;
        yxArguStruct.Yx_Check[0]=i;
        std::string code ="/数据"+std::to_string(i)+"/同学"+std::to_string(n)+"名称";
        QByteArray  teleValue = configIniRead->value(QString::fromLocal8Bit(code.data())).toString().toLatin1();
        QString str = QString::fromUtf8(teleValue.data());
        QStringList values = str.split(",");
        tempByte = values[0].remove("\"").toLatin1().data();
        memcpy(yxArguStruct.nameList[n].name,tempByte,(int)sizeof(yxArguStruct.nameList[n].name));
        QString classValue;
        QString genderValue;
        for (int j = 1; j < values.size(); j++) 
        {
           QStringList keyValue = values[j].split("=");
           QString key = keyValue[0].trimmed();
           QString value = keyValue[1].trimmed().remove("\"");
           if (j == 1) {
              classValue = value;
            } else if (j==2) {
              genderValue = value;
            } 
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 1月3日
  • 已采纳回答 12月26日
  • 创建了问题 12月22日