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