一,前言
之前已经学习了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六,小结
本次主要了解了些配置文件的读写方法。将来做工具一定会用到的。
网友评论