使用场景:
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初始化时,文件名可以是绝对路径,也可以是相对路径)
读出的配置信息打印如下: