Qt读取ini文件进行配置


Qt读取ini文件进行配置:

ini文件

.ini 文件是Initialization File的缩写,即初始化文件。
格式:
ini配置文件由节、键、值组成。
【节】
所有的参数都是以节(section)为单位结合在一起的。所有的section名称都是独占一行,并且section名字都被方括号包围着([和])。在section声明后的所有parameters都属于该section。一个section没有明显的结束标识符,一个section的开始就是上一个section的结束,或者是文件结束。
例如:

[addr]

【参数】
(键=值)
如:

ip=127.0.0.1
port=9527

【注解】
注解使用(;)表示,在分号后面的文字,直到该行结尾都全部为注释。

;addr配置ipv4地址和端口

整体如下:

[addr]
ip=192.168.1.1
port=5768
cvltime=10
user=plote
[system]
system-v=win10
cpu=4

QT读写ini文件内容:

使用QSetting类读写ini文件

//头文件 
#include <QSettings>
#include <QString>
#include <QDebug>
QSettings *settings;//申明一个QSetting类函数
settings = new QSettings ("config.ini", QSettings::IniFormat);//构建函数
//参数:参数一为配置文件,一般位于项目文件下,参数二表示针对ini文件格式

写入文件

//向目标文件中的config节的参数ip写入数据192.167.1.1 ini中为ip=192.187.1.1
settings->setValue("/system/user","admin");
settings->setValue("/system/pass","123");
settings->setValue("/system/ipaddress","192.167.1.1");

打开文件效果如下:

在这里插入图片描述

读取文件:

首先可以定义一个保存信息的结构体:

struct system_infomation{
    char *user;//用户
    char *pass;//密码
    char *ipaddress;//上位机网络地址
    int port;//上位机端口
    float cnum;
    };

这里常用的数据类似两种,一种是int型,一种是Qstring类型。

//先声明结构体
system_infomation sys;
sys.port=settings->value("/system/port").toInt();
sys.cnum=settings->value("/system/cnum").toFloat();//前面定义的什么类型,后面就转换为什么类型
QString pass=settings->value("/system/pass").toString();

如果是字符串,使用toString将数据转化为QString,注意这里的类型是Qstring,不能char * paw=pass;

sys.pass=settings->value("/system/pass").toString();是错误的,会报错,因为结构体中pass 的定义是char *

如果要将ini中的信息读取保存到char * 类型的结构体中,则涉及到一个类型的转换。

//char *型赋值
    QString pass=settings->value("/system/pass").toString();
    //sys.pass定义为char*
    QByteArray pa=pass.toLatin1();//将Qstring类转换为char *
    sys.pass=pa.data();

使用QbyteArray进行转化就可以将信息读取出来了。

还有一种将Qstring转化为char *的方法:
注意此方法要求char * 的定义为 const char *

//Qstring与char * 转化方法2 但是要求char*定义为 const char *
	QString pass=settings->value("/system/pass").toString();
    std::string str=pass.toStdString();
    sys.pass=str.c_str();

这里的sys.pass定义为const char *

在读写完后删除指针

delete settings;

输出

使用qDebug()输出

	qDebug() <<"user:"<<sys.pass;
    qDebug() <<"user:"<<sys.user;
    qDebug() <<"addr:"<<sys.ipaddress;
    qDebug() <<"port"<<sys.port;

运行效果如下:
在这里插入图片描述


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM