qt 的配置文件一般都用ini文件, 在此我记录下使用方法.
ini 组成简介:
INI文件由节点、键、值组成。
如下面代码中 : fileSetting->setValue("/fileSave/savePath",filePath);
节点 : fileSave 键 : savePath 值: filePath
使用说明:
1. 添加 INI_File.cpp 文件, 无需继承
2. 添加头文件
#include
#include
#include
3. 创建 ini 文件
INI_File::INI_File()
{
fileName = QCoreApplication::applicationDirPath() + "/Cofig.ini"; // 获取当前文件路径
fileSetting = new QSettings(fileName,QSettings::IniFormat); // 如果文件没有,创建文件
}
3. 读取和保存
void INI_File::setPath(QString filePath)
{
fileSetting->setValue("/fileSave/savePath",filePath); // 保存savePath 的值
}
QString INI_File::getPath()
{
return fileSetting->value("/fileSave/savePath").toString(); // 读取 savePath 的值
}
程序调用 :
// 读取配置文件中的值
QString str = INI_File().getPath(); // 读取保存的值
// 设置配置文件中的值
QString file_path = QFileDialog::getExistingDirectory(this, "请选择文件路径...", "./"); // 获取文件夹路径
if(!file_path.isEmpty())
{
INI_File().setPath(file_path); // 保存选择的路径
}
添加一些数据
void INI_File::setPath(QString filePath)
{
fileSetting->setValue("/fileSave/savePath",filePath); // 保存savePath 的值
// 测试使用
fileSetting->setValue("/ip/first", "192.168.0.1");
fileSetting->setValue("ip/second", "127.0.0.1");
fileSetting->setValue("port/open", "2222");
}
// 获取所有节点和key
QStringList str = fileSetting->allKeys();
qDebug() <<"allKeys : " << str << endl;
foreach(QString key,str)
{
qDebug() << fileSetting->value(key).toString()<< endl;// 读取 savePath 的值
}
打印结果
allKeys : ("fileSave/savePath", "ip/first", "ip/second", "port/open")
"fileSave/savePath" : "C:/Users/Administrator/Desktop"
"ip/first" : "192.168.0.1"
"ip/second" : "127.0.0.1"
"port/open" : "2222"
// 获取所有节点
QStringList str1 = fileSetting->childGroups();
qDebug() <<"childGroups : " << str1 << endl;
打印结果为 : childGroups : ("fileSave", "ip", "port")
注意
1) 代码中直接使用了 "key" ( value( key ).toString() )
2) beginGroup 使用完后, 一定要用 endGroup() , 不然后面 settings 将无法使用
// 获取一个节点下的key值
fileSetting->beginGroup("ip"); // 设置查找节点
QStringList str2 = fileSetting->allKeys(); // 获取所有的key
qDebug() <<"ip -- allKeys : " << str2 << endl;
foreach(QString key,str2)
{
QString value = fileSetting->value(key).toString(); // 直接用 key 获取数据
qDebug() <endGroup(); // 结束掉Group
打印结果如下:
ip -- allKeys : ("first", "second")
"first" : "192.168.0.1"
"second" : "127.0.0.1"
fileSetting->beginGroup("ip"); // 设置查找节点
QStringList str2 = fileSetting->allKeys(); // 获取所有的key
qDebug() <<"ip -- allKeys : " << str2 << endl;
foreach(QString key,str2)
{
if (fileSetting->contains(key)) // 判断"键"是否存在
fileSetting->remove(key); // 删除此键
else
{
QString value = fileSetting->value(key).toString(); // 直接用 key 获取数据
qDebug() <endGroup(); // 结束掉Group