QSetting使用说明
前言
客户要求用文本替代sqlite数据库记录以下格式信息,遍历及增删配置
[IP]
1=192.168.0.70
3=192.168.0.111
[PATH]
1=/usr/bin/qtcreator
2=/home/test
1.初始化
void Config::initSetting()
{
QString fileName="config.ini";
QFile file(fileName);
if(!file.exists())
{
FILE* fp = fopen("config.ini","wb");
fprintf(fp,"%s","[IP]\n");
fprintf(fp,"%s","\n");
fprintf(fp,"%s","[PATH]\n");
fclose(fp);
}
mySetting = new QSettings(fileName,QSettings::IniFormat); //别漏了QSettings::IniFormat
}
2.增加设置
void Config::addSetting(const QString§ion, const QString&left, const QString&right)
{
mySetting->setValue(QString("/%1/%2").arg(section).arg(left),right);
}
3.删除设置
void Config::removeSetting(const QString&setction, const QString&left)
{
mySetting->remove(QString("/%1/%2").arg(setction).arg(left));
}
4.遍历键值与值(左值与右值)
enum RL{ LEFT, RIGHT};
enum TYPE{IP,PATH};
QVariant Config::getSetting(TYPE type, RL LOCATION, const QString§ion)
{
mySetting->endGroup();
if(IP == type)
mySetting->beginGroup("IP");
else
mySetting->beginGroup("PATH");
if(LEFT == LOCATION)
{
auto results = mySetting->childKeys();
mySetting->endGroup();
return results;
}
else
{
auto keys = mySetting->childKeys();
if(IP == type)
for(auto i : keys)
i.push_front("/IP");
else
for(auto i : keys)
i.push_front("/PATH");
QStringList results;
for (auto i : keys)
results <<mySetting->value(i).toString();
mySetting->endGroup();
return QVariant(results);
}
}