九、Qt之读取 ini 文件

AppUtils.h

#ifndef APPUTILS_H
#define APPUTILS_H

#include <QObject>

class AppUtils : public QObject
{
    Q_OBJECT
    
public:
    static void setConfigFile(const QString &value); //设置配置文件名
    static void readConfig();                        //读取配置参数
    static void writeConfig();                       //写入配置参数
    static void newConfig();                         //初始值新建配置文件
    static bool checkConfig();                       //校验配置文件

private:
    static QString configFile;                       //配置文件名
    static QString username;                         //测试用户名
    static QString password;                         //测试密码
};

#endif // APPUTILS_H

AppUtils.cpp

#include "apputils.h"
#include <QSettings>
#include <QFile>

//代码中所用到的字段尽量写成全局变量,放置后期更改
static const QString INI_SQL_CONFIG = "SqlConfig";
static const QString INI_SQL_CONFIG_USERNAME = "username";
static const QString INI_SQL_CONFIG_PASSWORD = "password";

QString AppUtils::configFile = "config.ini";
QString AppUtils::username = "administrator";
QString AppUtils::password = "123123";

void AppUtils::setConfigFile(const QString &value)
{
    configFile = value;
}

void AppUtils::readConfig()
{
    if (!checkConfig()) {
        return;
    }

    QSettings settings(AppUtils::configFile, QSettings::IniFormat);

    settings.beginGroup(INI_SQL_CONFIG);
    AppUtils::username = settings.value(INI_SQL_CONFIG_USERNAME).toString();
    AppUtils::password = settings.value(INI_SQL_CONFIG_PASSWORD).toString();
    settings.endGroup();
}

void AppUtils::writeConfig()
{
    //参数 QSettings::IniFormat:代表读取的是 ini 文件,默认是注册表
    QSettings settings(AppUtils::configFile, QSettings::IniFormat);

    //按分组写入设置
    settings.beginGroup(INI_SQL_CONFIG);
    settings.setValue(INI_SQL_CONFIG_USERNAME, AppUtils::username);
    settings.setValue(INI_SQL_CONFIG_PASSWORD, AppUtils::password);
    settings.endGroup();
}

void AppUtils::newConfig()
{
    writeConfig();
}

bool AppUtils::checkConfig()
{
    //如果配置文件大小为0,则以初始值继续运行,并生成配置文件
    QFile file(AppUtils::configFile);
    if (file.size() == 0) {
        newConfig();
        return false;
    }

    if (file.open(QFile::ReadOnly)) {
        bool ok = true;
        while (!file.atEnd()) {
            QString line = file.readLine();
            line = line.replace("\r", "");
            line = line.replace("\n", "");
            QStringList list = line.split("=");
            if (list.isEmpty() || list.count() != 2 || list.at(1) == "") {
                ok = false;
                break;
            }
        }
        if (ok) {
            return true;
        }
    }
    //如果配置文件不完整,则以初始值继续运行,并生成配置文件
    newConfig();
    return false;
}



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值