0
点赞
收藏
分享

微信扫一扫

Qt读写ini配置文件

春意暖洋洋 2022-05-02 阅读 102

目录

ini文件介绍

概念

格式

ini文件控制

读取ini文件

写ini文件


ini文件介绍

概念

.ini 文件是Initialization File的缩写,即初始化文件,是windows的系统配置文件所采用的存储格式,统管windows的各项配置,一般用户就用windows提供的各项图形化管理界面就可实现相同的配置了。但在某些情况,还是要直接编辑ini才方便,一般只有很熟悉windows才能去直接编辑。

格式

一种非常原始的基础形式, 只适合非常非常简单的配置文件

后缀名不一定是".ini",也可以是".cfg",".conf ”等

没有固定的格式

由若干个section 组成,每个section又由多个parameters组成

parameters格式:name = key
section格式:[section]
注释格式:;
最多只能一层嵌套,一旦需要两层嵌套,或需要数组,就力不从心了
 

ini文件控制

QSettings

QSettings类提供持久的独立于平台的应用程序设置。

用户通常希望应用程序在会话中记住其设置(窗口大小和位置、选项等)。这些信息通常存储在Windows上的系统注册表中,以及macOS和iOS上的属性列表文件中。在Unix系统上,在没有标准的情况下,许多应用程序(包括KDE应用程序)使用INI文本文件。

QSettings是围绕这些技术的抽象,使您能够以可移植的方式保存和恢复应用程序设置。它还支持自定义存储格式。

QSettings的API基于QVariant,允许您以最小的工作量保存大多数基于值的类型,例如QString、QRect和QImage。

如果您只需要一个非持久性的基于内存的结构,可以考虑改用QMap<QString,QVariant>。

读取ini文件

Qt提供了QSettings类可以很方便的读写ini文件.

void MainWindow::readConfig()
{
    QString Path = QCoreApplication::applicationDirPath();
    QString endPath = Path + "/config.ini";
    QFileInfo fileinfo(endPath);
    if (!fileinfo.isFile()) {
        qDebug() << "文件不存在";
    }
    QSettings setting(endPath, QSettings::IniFormat);
    setting.beginGroup("WB");
    QString UUID = setting.value("UUID", "").toString();
    QString strVersion = setting.value("Version", "").toString();
    QString strInstanceId = setting.value("InstanceId", "").toString();
    m_ptrLineEditUUID->setText(UUID);
    m_ptrLineEditVersion->setText(strVersion);
    m_ptrLineEditInstanceID->setText(strInstanceId);
}

beginGroup:选择哪一个section.

通过关键此查询到对应的字符串内容,可以使用toString转为字符串,也可以使用toInt转为int类型.

写ini文件

void MainWindow::saveConfig()
{
    QString Path = QCoreApplication::applicationDirPath();
    QString endPath = Path + "/config.ini";
    QFileInfo fileinfo(endPath);
    if (!fileinfo.isFile()) {
        qDebug() << "文件不存在";
    }
    QSettings setting(endPath, QSettings::IniFormat);
    setting.beginGroup("WB");
    //读配置文件

    //写入配置文件
    setting.setValue("UUID", m_ptrLineEditUUID->text());
    setting.setValue("Version", m_ptrLineEditVersion->text());
    setting.setValue("InstanceId", m_ptrLineEditInstanceID->text());
}

QCoreApplication::applicationDirPath(); 获取当前应用的目录地址,然在应用目录下创建文件从config.ini

QSettings可以直接操作文件.使用setValue就能够直接设置文件内容.

保存内容如下:

[WB]
InstanceId=23333333
UUID=111111
Version=222222
举报

相关推荐

0 条评论