Qt读写配置文件

1.头文件声明一个QSetting对象,和配置项目默认值(第4,6项使用)
QSettings *m_psetting = nullptr;

const int default_image_resolution_width = 320;
const int default_image_resolution_height = 240;

2.初始化时,设置Config.ini路径(2~6均在初始化函数中执行,故修改配置项需要重启才能生效)
//QCoreApplication::applicationDirPath() 获取可执行文件所在路径
QString configFileName = QCoreApplication::applicationDirPath() + “/Config.ini”;

3.根据Config.ini路径new QSetting对象
m_psetting = new QSettings(configFileName, QSettings::IniFormat);

4.判断Config.ini是否存在,若不存在则再可执行文件的同级目录下创建一个Config.ini
QFileInfo fileInfo(configFileName);
if(!fileInfo.exists())
{
//打印创建文件的路径
qDebug("%s is not exists.", configFileName.toLatin1().data());
//写入默认值
SetConfigData(“image_resolution”, “on_off”, false);
SetConfigData(“image_resolution”, “width”, default_image_resolution_width);
SetConfigData(“image_resolution”, “height”, default_image_resolution_height);
}

5.读取Config.ini的数据
bool image_resolution_switch = GetConfigData(“image_resolution”, “on_off”).toBool();
int image_resolution_width = GetConfigData(“image_resolution”, “width”).toInt();
int image_resolution_height = GetConfigData(“image_resolution”, “height”).toInt();

6.根据读取的数据判断配置项有效性,无效则设置为默认值
if (image_resolution_width <= 0 || image_resolution_height <= 0) {
image_resolution_width = default_image_resolution_width;
image_resolution_height = default_image_resolution_height;
}

7.写配置文件接口
//参数1:qstrnodename -> 如下图中[image_resolution]
//参数2:qstrkeyname -> 如下图中[image_resolution]之下的配置项的变量,如on_off、width、height
//参数3:qvarvalue -> 如下图中[image_resolution]之下的配置项的变量的值,如on_off=true、width=320、height=240
void SetConfigData(QString qstrnodename, QString qstrkeyname, QVariant qvarvalue)
{
if (m_psetting) {
m_psetting->setValue(QString("/%1/%2").arg(qstrnodename).arg(qstrkeyname), qvarvalue);
}
}

8.读配置文件接口
//参数1:qstrnodename -> 如下图中[image_resolution]
//参数2:qstrkeyname -> 如下图中[image_resolution]之下的配置项的变量,如on_off、width、height
//返回值:QVariant -> 读取到,如下图中[image_resolution]之下的配置项的变量的值,如on_off=true、width=320、height=240
QVariant GetConfigData(QString qstrnodename, QString qstrkeyname)
{
QVariant qvar = -1;
if (m_psetting) {
qvar = m_psetting->value(QString("/%1/%2").arg(qstrnodename).arg(qstrkeyname));
}
return qvar;
}

以下为自动生成的Config.ini文件(可通过GetConfigData读取数据,通过SetConfigData写数据)
Qt读写配置文件_第1张图片

你可能感兴趣的:(Qt,工具类使用,C++)