背景:
程序需要设置参数保存在本地,下次一次打开时参数为上次设置的值,不会被重新初始化。
QSettings类
实现步骤
1 新建paraConfig类
1.1 paraConfig方法中传入文件名参数fileName
1.2 在程序目录下新建一个CFG文件夹,(ini文件存放在此文件夹下)
先判断文件夹是否存在 QDir 下的函数 bool QDir::exists(const QString &name) const
如果存在就直接返回已经存在的目录Str,不存在就mkpath新建目录,然后再返回目录。
1.3 将目录名和文件名字符串连接合并传入configFileInit(fileName)
1 使用QFileInfo 类的 isFile 函数判断fileName是否是一个文件,如果不是说明该文件需要新建,如果是说明该文件已经建好了直接返回。
2 如果需要新建则 使用QSettings 类
QSettings myCfgFile(fileName,QSettings::IniFormat);
写入数据步骤:
a 设置组 myCfgFile.beginGroup("Semi")
b 设置键值和相应的参数 (参数可以是int 和str 和其它类型)
myCfgFile.setValue("key1",1)
......
myCfgFile.setValue("key2","abc");
c 结束组 myCfgFile.endGroup()
4 文件读取,将ini文件中的参数读出,保存到configData结构体中,用于界面使用
void paraConfig::GetConfigFile(uint8_t u8Type ,S_ConfigData *configData);
读取步骤:
a 获取INI文件,方法和新建INI文件一样,如果传入的文件名一样,则不会新建,直接获取该文件
QSettings myCfgFile(mPathFileNameAll,QSettings::IniFormat)
b 定位到组 myCfgFile.beginGroup("Semi");
c 读取键值和参数 configData->value=myCfgFile.value("key1").toInt();
d 结束键值 myCfgFile.endGroup()
5 文件写入,将界面参数(结构体S_ConfigData )写入到INI文件。
void paraConfig::Save_UIConfig_To_File(uint8_t u8Type,S_ConfigData *configData)
写入步骤:
a 获取INI文件,方法和新建INI文件一样,如果传入的文件名一样,则不会新建,直接获取该文件
QSettings myCfgFile(mPathFileNameAll,QSettings::IniFormat)
b 定位到组 myCfgFile.beginGroup("Semi");
c 写入键值和参数
myCfgFile.setValue("key1",1)
......
myCfgFile.setValue("key2","abc");
d 结束键值 myCfgFile.endGroup()
2使用paraConfig类
1 初始化新建
myParaFileSemi= new paraConfig("cfg.ini");
2 进入参数界面 调用读取文件
myParaFileSemi->GetConfigFile(0,&sConfigDataSemi);
3 保存参数写入文件
myParaFileSemi->Save_UIConfig_To_File(u8TestMode,&sConfigDataSemi);