Qt读写配置文件(.ini)

使用场景:

       Qt编写的界面应用程序可以直接操作arm板,完成对wifi、蓝牙、屏幕、声音等的配置,但是每次开机(重启)后,界面会回到系统默认的配置,例如上次关机前调整声音为最大,下次开机时声音实际已经很大了,但是界面上显示是默认的状态(可能静音或别的值,如果没有单独设置过,一定不是100)。相应的解决方法有两种:一,在构造函数中重新获取一次声音的时间大小,然后去设置显示的图标的值,实现同步。二,就是把所有的配置信息写在一个单独的文件中(.ini),每次开机读取,更改时写入,就可以保证界面与板端的同步,显然第二种方法更便捷,利于配置项的统一管理。

        .ini是Initialization File的缩写,最初用在windows中。文件由组成,如下代码中,:[General],:netmask,:255.255.255.0。

[General]
netmask=255.255.255.0

使用方法:

       Qt中的QSettings类提供了众多接口去设置或获取,更多方法Qt手册很详细。最基本的写入文件则调用setValue函数,获取则调用value函数,具体使用如下:

#include "mainwindow.h"
#include <QApplication>
#include<QSettings>
#include<QString>
#include<QDebug>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    QSettings *writeConfigPointer = new QSettings("cctestconfig.ini",QSettings::IniFormat);

    writeConfigPointer->setValue("ip/fist","192.168.2.135");
    writeConfigPointer->setValue("ip/second","127.0.0.1");
    writeConfigPointer->setValue("netmask","255.255.255.0");
    writeConfigPointer->setValue("port/open","2222");
    delete writeConfigPointer;

    QSettings *readConfigPointer = new QSettings("cctestconfig.ini",QSettings::IniFormat);
    auto printTest = readConfigPointer->value("ip/fist");
    qDebug()<<printTest<<endl;

    printTest = readConfigPointer->value("ip/second");
    qDebug()<<printTest<<endl;

    printTest = readConfigPointer->value("netmask/");
    qDebug()<<printTest<<endl;

    printTest = readConfigPointer->value("port/open");
    qDebug()<<printTest<<endl;

    printTest = readConfigPointer->fileName();
    qDebug()<<printTest<<endl;

    return a.exec();
}

  代码效果: 

         写入配置文件内容如下:(setting初始化时,文件名可以是绝对路径,也可以是相对路径)

         读出的配置信息打印如下:

发布了123 篇原创文章 · 获赞 133 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/baidu_33879812/article/details/102546440