Qt讀寫(xiě)ini文件的方法詳解(含源碼+注釋)_第1頁(yè)
Qt讀寫(xiě)ini文件的方法詳解(含源碼+注釋)_第2頁(yè)
Qt讀寫(xiě)ini文件的方法詳解(含源碼+注釋)_第3頁(yè)
Qt讀寫(xiě)ini文件的方法詳解(含源碼+注釋)_第4頁(yè)
Qt讀寫(xiě)ini文件的方法詳解(含源碼+注釋)_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第Qt讀寫(xiě)ini文件的方法詳解(含源碼+注釋)目錄一、示例Ini文件內(nèi)容二、Ini文件的寫(xiě)入三、Ini文件的讀取3.1第一種讀取方式3.2第二種讀取方式3.3讀取結(jié)果示例補(bǔ)充:獲取所有節(jié)點(diǎn)和key以及節(jié)點(diǎn)的遍歷相關(guān)文章總結(jié)

一、示例Ini文件內(nèi)容

下方為本文所使用的ini文件的內(nèi)容

[group1]

key1=val1

key2=val2

sameKay=sameVal

[group2]

jian1=zhi1

jian2=zhi2

sameKay=sameZhi

二、Ini文件的寫(xiě)入

ini文件不需要像xml和json一樣需要使用QFile打開(kāi)文件,只需將文件路徑及文件格式傳入即可(下方代碼運(yùn)行完畢,ini文件則會(huì)更新,若文件不存在,會(huì)自動(dòng)創(chuàng)建)

//創(chuàng)建QSettings對(duì)象并指定ini文件路徑并將格式設(shè)置為ini

QSettingssetting("./iniTest.ini",QSettings::IniFormat);

//創(chuàng)建第一個(gè)分組(創(chuàng)建分組的第一種方法)

setting.beginGroup("group1");

//添加第一個(gè)分組中的鍵值對(duì)

setting.setValue("key1","val1");

setting.setValue("key2","val2");

setting.setValue("sameKay","sameVal");

//設(shè)置當(dāng)前分組結(jié)束

setting.endGroup();

//添加第二個(gè)分組以及其鍵值對(duì)(創(chuàng)建分組的第二種方法)

setting.setValue("group2/jian1","zhi1");

setting.setValue("group2/jian2","zhi2");

setting.setValue("group2/sameKay","sameZhi");

三、Ini文件的讀取

3.1第一種讀取方式

好處:步驟不那么繁瑣,代碼簡(jiǎn)潔

壞處:不能指定讀取某一組的內(nèi)容,必須讀取ini文件所有內(nèi)容

//創(chuàng)建QSettings對(duì)象并指定ini文件路徑并將格式設(shè)置為ini

QSettingssetting("./iniTest.ini",QSettings::IniFormat);

//讀取ini文件內(nèi)容的第一種方法

qDebug()"第一種讀取方法";

foreach(QStringkey,setting.allKeys())

//將當(dāng)前的鍵值對(duì)打印輸出

qDebug()keysetting.value(key).toString();

3.2第二種讀取方式

好處:能指定讀取某一組的內(nèi)容

壞處:步驟相較第一種方式更加繁瑣

//創(chuàng)建QSettings對(duì)象并指定ini文件路徑并將格式設(shè)置為ini

QSettingssetting("./iniTest.ini",QSettings::IniFormat);

qDebug()"第二種讀取方法";

//獲取ini文件中所有的組

QStringListgroupList=setting.childGroups();

//指定讀取某組的數(shù)據(jù)

setting.beginGroup(groupList[1]);

//遍歷該組的鍵

foreach(QStringkey,setting.childKeys())

//將當(dāng)前的鍵值對(duì)打印輸出

qDebug()keysetting.value(key).toString();

3.3讀取結(jié)果示例

下方為兩種讀取方法輸出示例

補(bǔ)充:獲取所有節(jié)點(diǎn)和key以及節(jié)點(diǎn)的遍歷

添加一些數(shù)據(jù)

voidINI_File::setPath(QStringfilePath)

fileSetting-setValue("/fileSave/savePath",filePath);//保存savePath的值

//測(cè)試使用

fileSetting-setValue("/ip/first","192.168.0.1");

fileSetting-setValue("ip/second","127.0.0.1");

fileSetting-setValue("port/open","2222");

1.獲取整個(gè)ini文件所有的key(allKeys)

//獲取所有節(jié)點(diǎn)和key

QStringListstr=fileSetting-allKeys();

qDebug()"allKeys:"strendl;

foreach(QStringkey,str)

qDebug()fileSetting-value(key).toString()endl;//讀取savePath的值

打印結(jié)果

allKeys:(fileSave/savePath,ip/first,ip/second,port/open)

fileSave/savePath:C:/Users/Administrator/Desktop

ip/first:192.168.0.1

ip/second:127.0.0.1

port/open:2222

2.獲取所有節(jié)點(diǎn)(childGroups)

//獲取所有節(jié)點(diǎn)

QStringListstr1=fileSetting-childGroups();

qDebug()"childGroups:"str1endl;

打印結(jié)果為:childGroups:(fileSave,ip,port)

3.遍歷一個(gè)節(jié)點(diǎn)ip下所有key的值(beginGroup+allKeys+endGroup)

注意

1)代碼中直接使用了key(value(key).toString())

2)beginGroup使用完后,一定要用endGroup(),不然后面settings將無(wú)法使用

//獲取一個(gè)節(jié)點(diǎn)下的key值

fileSetting-beginGroup("ip");//設(shè)置查找節(jié)點(diǎn)

QStringListstr2=fileSetting-allKeys();//獲取所有的key

qDebug()"ip--allKeys:"str2endl;

foreach(QStringkey,str2)

QStringvalue=fileSetting-value(key).toString();//直接用key獲取數(shù)據(jù)

qDebug()key":"valueendl;

fileSetting-endGroup();//結(jié)束掉Group

打印結(jié)果如下:

ip--allKeys:(first,second)

first:192.168.0.1

second:127.0.0.1

4.刪除操作:

contains()判斷一個(gè)指定的鍵是否存在remove()刪除相關(guān)的鍵clear()刪除所有鍵

fileSetting-beginGroup("ip");//設(shè)置查找節(jié)點(diǎn)

QStringListstr2=fileSetting-allKeys();//獲取所有的key

qDebug()"ip--allKeys:"str2endl;

foreach(QStringkey,str2)

if(fileSetting-contains(key))//判斷"鍵"是否存在

fileSetting-remove(key);//刪除此鍵

else

QStringvalue=fileSetti

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論