一:概要
` 上位机自动化软件开发中,对于机台参数通常需要以Ini格式文件保存在本地,即程序运行时,可在界面将参数保存至本地,程序初始化时,可将本地ini文件中参数加载到机台中。
本文以VS2019+QT为开发环境,对Ini文件、cfg文件读写方法简单描述,由于cfg文件与ini文件只是后缀名不同,因此主要以ini文件为例,简述ini文件操作。
二:INI文件格式介绍
本地新建一个记事本文件,将后缀改为***.ini***格式,即可生成ini文件。
文件内容由两部分组成:节点、节点下参数
节点格式:[名称],例如[config]
各节点在文件中唯一,即节点名称不能重复
节点下参数格式:键值对形式存在(key=value),例如UserID=123456
同一节点下,键(key)不可重复,例如节点[1]下,不可存在两个相同的键UserID,倘若节点[1]下已经存在,节点[2]下,可以创建UserID
格式范例如下:
[MTF]
userID=12
userName=xiaowang
useradress=china
[config]
userID=13
MTFUpStd=1
如果需要对文件中参数做说明,可利用//批注,格式如下
//用户信息
//!userID 用户ID
//!userName用户姓名
//!useradress用户地址
[MTF]
userID=12
userName=xiaowang
useradress=china
[config]
userID=13
MTFUpStd=1
三:ini文件简单操作
QT中使用QSettings类读写ini文件,因此在需要读写的h文件或者cpp文件中添加#include 。
常用格式:QSettings cfg(ini文件位置, QSettings::IniFormat);
读:value
写:setValue
3.1 读ini文件
采用value方法,简单读取如下:
const QString SysConfigPath = "./Config/config.ini"; //ini文件路径,此处为相对路径
QSettings cfg(SysConfigPath, QSettings::IniFormat);
//方式一:
cfg.beginGroup("MTF"); //beginGroup与endGroup配对使用
QString userID=cfg.value("userID");
QString userName=cfg.value("userName");
cfg.endGroup();
//方式二:
QString userName=cfg.value("/MTF/userName");
上述方法可将本地ini文件中的参数读取到程序中
3.2 写ini文件
采用setValue方法,简单写入如下:
const QString SysConfigPath = "./Config/config.ini"; //ini文件路径,此处为相对路径
QSettings cfg(SysConfigPath, QSettings::IniFormat);
QString userName=cfg.setValue("MTF/userName",111);
上述方法可将程序中需要修改的ini文件参数保存至本地ini文件中
3.3 获取某一节点下所有键
方法:childKeys,案例如下:
const QString SysConfigPath = "./Config/config.ini"; //ini文件路径,此处为相对路径
QSettings cfg(SysConfigPath, QSettings::IniFormat);
cfg.beginGroup("MTF"); //beginGroup与endGroup配对使用
QStringList MTF= cfg.childKeys(); //使用allKeys函数,获取当前设置中所有键的列表
for (auto iter : MTF)
{
QString product = cfg.value(iter).toString();
if()
{
//自行操作
}
}
cfg.endGroup();