版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 3215-2025石油、石化和天然氣工業(yè)用離心泵
- GB/T 32219-2026筒式磨機(jī)鑄造磨段
- 創(chuàng)業(yè)培訓(xùn)教師授課信息反饋表
- 平臺(tái)穩(wěn)性操作員保密競(jìng)賽考核試卷含答案
- 制材工安全文明測(cè)試考核試卷含答案
- 軋鋼精整工安全宣貫強(qiáng)化考核試卷含答案
- 橋梁支座試驗(yàn)培訓(xùn)
- 銀行內(nèi)部審計(jì)報(bào)告制度
- 酒店員工獎(jiǎng)懲與激勵(lì)機(jī)制制度
- 超市員工績(jī)效考核制度
- 企業(yè)工作流程管理標(biāo)準(zhǔn)手冊(cè)
- 倒掛井壁法施工安全技術(shù)保證措施
- 2025年低空經(jīng)濟(jì)無(wú)人機(jī)災(zāi)害預(yù)警行業(yè)報(bào)告
- 2025年健康養(yǎng)生行業(yè)消費(fèi)者畫(huà)像與消費(fèi)需求研究報(bào)告
- 鍋爐班組級(jí)安全培訓(xùn)課件
- 安全生產(chǎn)明白人培訓(xùn)課件
- 襯膠施工方案
- 中國(guó)原發(fā)性閉角型青光眼診治方案專(zhuān)家共識(shí)(2025年)解讀
- 用戶界面設(shè)計(jì)規(guī)范及模板
- 2025年上海高考英語(yǔ)試卷及答案
- 黑龍江省大慶市2025年中考物理真題(含答案)
評(píng)論
0/150
提交評(píng)論