7.QT读写ini配置文件--Apple的学习笔记

一,前言

之前已经学习了QT访问数据库6.QT连接sqlite数据库--Apple的学习笔记,那么今天继续和数据打交道,比如ini配置,json,xml等。我以前制作python小工具会用到ini和json,那么QT我也尝试下使用他们。

二,需求

本次刻意练习的目标是实现ini配置文件的读写。

三,设计

网上搜索了下ini和json类似,xml主要有node循环扫描。所以我实现了ini。而ini类在widget销毁的时候会自动保存。另外关于配置的类,都设计为了单例模式来共享静态类,其它widget可以直接访问其方法。
顺便应用下QTableview界面来显示。所以我用了之前page切换的一个widget移植后稍微修改下。而ini数据读取后,保存到向量数组中。ini类非widget,是一个独立的类,将来便于移植使用。关于读和写ini代码如下

void QReadIni::readIni()
{
    QSettings * configIniRead = new QSettings("user.ini",QSettings::IniFormat);        //初始化读取Ini文件对象
    iniConfig.ip = configIniRead->value("conn/ip").toString();                          //IP地址
    iniConfig.port = configIniRead->value("conn/port").toString();                      //端口
    iniConfig.dataBaseType = configIniRead->value("conn/databasetype").toString();      //数据库类型
    iniConfig.dataBaseName = configIniRead->value("conn/databasename").toString();      //数据库名称
    iniConfig.userName = configIniRead->value("conn/username").toString();              //用户名
    iniConfig.passWord = configIniRead->value("conn/password").toString();              //密码
    delete configIniRead;
    // save to vector
    info.push_back(iniConfig.ip);
    info.push_back(iniConfig.port);
    info.push_back(iniConfig.dataBaseType);
    info.push_back(iniConfig.dataBaseName);
    info.push_back(iniConfig.userName);
    info.push_back(iniConfig.passWord);
}
void QReadIni::saveIni()
{
   QSettings *configIniSave = new QSettings("user.ini", QSettings::IniFormat);
   configIniSave->setValue("conn/ip", "192.168.0.1");  
   configIniSave->setValue("conn/username", "PeterWang");   
   delete configIniSave;  
   qDebug()<<"saved";
}

四,问题

ini文件无法添加到资源文件中
此问题我暂时无法解决。主要觉得放什么位置也没那么重要,能访问即可。

五,效果

image.png

六,小结

本次主要了解了些配置文件的读写方法。将来做工具一定会用到的。

你可能感兴趣的:(7.QT读写ini配置文件--Apple的学习笔记)