最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Qt讀寫ini文件的方法詳解(含源碼+注釋)

 更新時(shí)間:2022年10月21日 10:35:27   作者:lw只吃億點(diǎn).  
.ini文件是Initialization?File的縮寫,即初始化文件,下面這篇文章主要給大家介紹了關(guān)于Qt讀寫ini文件(含源碼+注釋)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

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

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

[group1]
key1=val1
key2=val2
sameKay=sameVal

[group2]
jian1=zhi1
jian2=zhi2
sameKay=sameZhi

二、Ini文件的寫入

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

    //創(chuàng)建QSettings對象并指定ini文件路徑并將格式設(shè)置為ini
    QSettings setting("./iniTest.ini", QSettings::IniFormat);
    //創(chuàng)建第一個(gè)分組(創(chuàng)建分組的第一種方法)
    setting.beginGroup("group1");
    //添加第一個(gè)分組中的鍵值對
    setting.setValue("key1", "val1");
    setting.setValue("key2", "val2");
    setting.setValue("sameKay", "sameVal");
    //設(shè)置當(dāng)前分組結(jié)束
    setting.endGroup();
    //添加第二個(gè)分組以及其鍵值對(創(chuàng)建分組的第二種方法)
    setting.setValue("group2/jian1", "zhi1");
    setting.setValue("group2/jian2", "zhi2");
    setting.setValue("group2/sameKay", "sameZhi");

三、Ini文件的讀取

3.1 第一種讀取方式

好處:步驟不那么繁瑣,代碼簡潔

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

	//創(chuàng)建QSettings對象并指定ini文件路徑并將格式設(shè)置為ini
    QSettings setting("./iniTest.ini", QSettings::IniFormat);
    //讀取ini文件內(nèi)容的第一種方法
    qDebug() << "第一種讀取方法";
    foreach (QString key, setting.allKeys())
    {
        //將當(dāng)前的鍵值對打印輸出
        qDebug() << key << setting.value(key).toString();
    }

3.2 第二種讀取方式

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

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

	//創(chuàng)建QSettings對象并指定ini文件路徑并將格式設(shè)置為ini
    QSettings setting("./iniTest.ini", QSettings::IniFormat);
	qDebug() << "第二種讀取方法";
    //獲取ini文件中所有的組
    QStringList groupList = setting.childGroups();
    //指定讀取某組的數(shù)據(jù)
    setting.beginGroup(groupList[1]);
    //遍歷該組的鍵
    foreach (QString key, setting.childKeys())
    {
        //將當(dāng)前的鍵值對打印輸出
        qDebug() << key << setting.value(key).toString();
    }

3.3 讀取結(jié)果示例

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

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

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

void INI_File::setPath(QString filePath)
{
    fileSetting->setValue("/fileSave/savePath",filePath);  // 保存savePath 的值
 
    // 測試使用
    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
   QStringList str = fileSetting->allKeys();
    qDebug() <<"allKeys : " << str << endl;
 
    foreach(QString key,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)
    QStringList str1 = fileSetting->childGroups();
    qDebug() <<"childGroups : " << str1 << endl;

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

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

注意

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

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

    // 獲取一個(gè)節(jié)點(diǎn)下的key值
    fileSetting->beginGroup("ip");    // 設(shè)置查找節(jié)點(diǎn)
    QStringList str2 = fileSetting->allKeys();    // 獲取所有的key
    qDebug() <<"ip --  allKeys : " << str2 << endl;
 
    foreach(QString key,str2)
    {
       QString value  = fileSetting->value(key).toString();  // 直接用 key 獲取數(shù)據(jù)
       qDebug() <<key << " : "<< value << endl;
    }
 
    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)
    QStringList str2 = fileSetting->allKeys();    // 獲取所有的key
    qDebug() <<"ip --  allKeys : " << str2 << endl;
 
    foreach(QString key,str2)
    {
        if (fileSetting->contains(key))    // 判斷"鍵"是否存在
             fileSetting->remove(key);      // 刪除此鍵
        else
        {
            QString value  = fileSetting->value(key).toString();  // 直接用 key 獲取數(shù)據(jù)
            qDebug() <<key << " : "<< value << endl;
        }
    }
    fileSetting->endGroup();   // 結(jié)束掉Group

相關(guān)文章

總結(jié)

到此這篇關(guān)于Qt讀寫ini文件(含源碼+注釋)的文章就介紹到這了,更多相關(guān)Qt讀寫ini文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • C/C++ 編譯器優(yōu)化介紹

    C/C++ 編譯器優(yōu)化介紹

    這篇文章主要涉及了C/C++ 編譯器優(yōu)化的簡單介紹,具有一定參考價(jià)值。如有不對之處,歡迎指出。
    2017-09-09
  • C++設(shè)計(jì)模式之建造者模式(Builder)

    C++設(shè)計(jì)模式之建造者模式(Builder)

    這篇文章主要介紹了C++設(shè)計(jì)模式之建造者模式Builder的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • C語言中形參和實(shí)參詳解及實(shí)例代碼

    C語言中形參和實(shí)參詳解及實(shí)例代碼

    這篇文章主要介紹了C語言中形參和實(shí)參詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • C++指針運(yùn)算符(&和*)的實(shí)現(xiàn)

    C++指針運(yùn)算符(&和*)的實(shí)現(xiàn)

    C++ 提供了兩種指針運(yùn)算符,一種是取地址運(yùn)算符 &,一種是間接尋址運(yùn)算符 *,本文就詳細(xì)的介紹一下這兩種運(yùn)算符的使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • Windows下CMake的下載與安裝過程

    Windows下CMake的下載與安裝過程

    CMake是一個(gè)跨平臺的安裝(編譯)工具,可以用簡單的語句來描述所有平臺的安裝(編譯過程),這篇文章主要介紹了Windows下CMake的下載與安裝,需要的朋友可以參考下
    2022-02-02
  • QT圓形圖像剪切功能實(shí)現(xiàn)

    QT圓形圖像剪切功能實(shí)現(xiàn)

    這篇文章主要介紹了QT圓形圖像剪切,實(shí)現(xiàn)代碼包括剪切代碼,完整QML源碼,C++代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • c文件匯編后函數(shù)參數(shù)傳遞的不同之處

    c文件匯編后函數(shù)參數(shù)傳遞的不同之處

    在w7 32位系統(tǒng)下把c文件匯編后,確實(shí)與mac后的差異很大??刹粌H僅是寄存器eax與rax的區(qū)別。我想說的是函數(shù)參數(shù)傳遞的不同
    2013-11-11
  • Matlab實(shí)現(xiàn)繪制高階版本韋恩圖(upset圖)

    Matlab實(shí)現(xiàn)繪制高階版本韋恩圖(upset圖)

    韋恩圖隨著階數(shù)升高會(huì)越來越復(fù)雜,當(dāng)階數(shù)達(dá)到7或者以上時(shí)幾乎沒辦法繪制,但是使用upset圖卻可以比較輕易的繪制。本文就來用Matlab實(shí)現(xiàn)繪制upset圖,需要的可以參考一下
    2023-01-01
  • C語言詳細(xì)講解注釋符號的使用

    C語言詳細(xì)講解注釋符號的使用

    C語言的注釋符是以“/*”開頭并以“*/”結(jié)尾的串。在“/*”和“*/”之間的即為注釋。程序編譯時(shí),不對注釋作任何處理。注釋可出現(xiàn)在程序中的任何位置。注釋用來向用戶提示或解釋程序的意義。在調(diào)試程序中對暫不使用的語句也可用注釋符括起來,使翻譯跳過不作處理
    2022-04-04
  • C語言實(shí)現(xiàn)清空指定文件夾中所有文件的方法

    C語言實(shí)現(xiàn)清空指定文件夾中所有文件的方法

    這篇文章主要介紹了C語言實(shí)現(xiàn)清空指定文件夾中所有文件的方法,實(shí)例分析了C語言實(shí)現(xiàn)文件刪除的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06

最新評論

慈溪市| 翁牛特旗| 南通市| 汉沽区| 朝阳市| 常山县| 天津市| 和静县| 珠海市| 武夷山市| 江阴市| 长武县| 河南省| 西安市| 中方县| 丹凤县| 赣州市| 白朗县| 监利县| 曲沃县| 太和县| 吴堡县| 台南县| 衡阳县| 西昌市| 穆棱市| 方山县| 贡嘎县| 隆子县| 宝清县| 通化县| 石楼县| 建始县| 定南县| 古浪县| 定日县| 余干县| 玉环县| 黑水县| 淅川县| 通化市|