• Qt读写ini


    一、ini文件
    语法:由节、键、值组成

    节:section
    参数:(键=值)
    ini文件注释一分号(;)开头

    二、QSettings

    关于QSettings类请参阅
    QT中对ini文件的操作使用到QSettings类

    //函数
    QSettings(ini路径文件名, QSettings::IniFormat); //构造函数
    setIniCodec(QTextCodec::codecForName("utf-8"));//设置编码,utf-8格式
    value(); //得到参数对应的文本
    setValue(); //设置文本

    beginGroup(section值); //开始一组section
    endGroup(); //结束一组section

    三、演示案例
    下面演示一个Tab Widget控件对ini文件的读取与写入
    //ini文件数据读取到Tab Widget控件中

    1. QFileInfo iniFileInfo = QFileInfo(iniPathString); //iniPathString为ini文件的路径
    2. if(iniFileInfo.exists()) //如果ini文件存在
    3. {
    4.     QSettings *config = new QSettings(iniPathString, QSettings::IniFormat);
    5.     config->setIniCodec(QTextCodec::codecForName("utf-8"));//设置ini文件为utf-8格式
    6.     for(int i = 0; i < 10; i++)//假设最大十个section
    7.     {
    8.         QString section = QString("teacher%1/").arg(i);//格式化
    9.         if(config->value(section + "name").toString().isEmpty())
    10.         {
    11.             continue;//空数据不做处理
    12.         }
    13.         currentRow = i; //当前行数
    14.          ui->tableWidget->insertRow(i);//插入新行
    15.         itemName = config->value(section + "name").toString();
    16.         currentColumn = 0;
    17.         ui->tableWidget->setItem(currentRow, currentColumn, new QTableWidgetItem(itemName));//插入第0行第0
    18.         itemName = config->value(section + "course").toString();
    19.         currentColumn = 1;
    20.         ui->tableWidget->setItem(currentRow, currentColumn, new         QTableWidgetItem(itemName));//插入0行第1
    21.         itemName = config->value(section + "time").toString();
    22.         currentColumn = 2;
    23.         ui->tableWidget->setItem(currentRow, currentColumn, new QTableWidgetItem(itemName));//插入第0行第2
    24.         itemName = config->value(section + "read").toString();
    25.         currentColumn = 3;
    26.         ui->tableWidget->setItem(currentRow, currentColumn, new QTableWidgetItem(itemName));//插入第0行第3
    27.     }
    28.     delete config;
    29. }


    //将Tab Widget控件中的数据写入ini文件中

    1. if(iniFileInfo.exists())//如果ini文件存在
    2. {
    3.     QSettings *config = new QSettings(iniPathString, QSettings::IniFormat);
    4.     config->setIniCodec(QTextCodec::codecForName("utf-8"));//告诉Qt ini文件为utf-8格式
    5.     for(int i = 0; i < ui->tableWidget->rowCount(); i++)
    6.     {
    7.         QString section = QString("teacher%1/").arg(i);
    8.         config->beginGroup(section); //开始一组section
    9.         config->setValue("name", ui->tableWidget->item(i, 0)->text());
    10.         config->setValue("course", ui->tableWidget->item(i, 1)->text());
    11.         config->setValue("time", ui->tableWidget->item(i, 2)->text());
    12.         config->setValue("read", ui->tableWidget->item(i, 3)->text());
    13.         config->endGroup();
    14.     }
    15.     delete config;
    16. }

  • 相关阅读:
    mybatis—plus
    PTE阶段规划
    在毕设中,使用vue3+pinia的一些收获
    React-Router link方式跳转
    安卓常见设计模式5------桥接模式(Kotlin版)
    从零开始学习PX4源码2(PX4姿态误差计算)
    测试Python读写ini配置文件
    获取闲鱼已售商品的价格等信息
    【数据结构----树】校招笔试题总结
    基于Android的车载操作系统 目录
  • 原文地址:https://blog.csdn.net/delphigbg/article/details/127957471