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

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

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

一、示例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打開文件,只需將文件路徑及文件格式傳入即可(下方代碼運行完畢,ini文件則會更新,若文件不存在,會自動創(chuàng)建)

    //創(chuàng)建QSettings對象并指定ini文件路徑并將格式設(shè)置為ini
    QSettings setting("./iniTest.ini", QSettings::IniFormat);
    //創(chuàng)建第一個分組(創(chuàng)建分組的第一種方法)
    setting.beginGroup("group1");
    //添加第一個分組中的鍵值對
    setting.setValue("key1", "val1");
    setting.setValue("key2", "val2");
    setting.setValue("sameKay", "sameVal");
    //設(shè)置當前分組結(jié)束
    setting.endGroup();
    //添加第二個分組以及其鍵值對(創(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())
    {
        //將當前的鍵值對打印輸出
        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())
    {
        //將當前的鍵值對打印輸出
        qDebug() << key << setting.value(key).toString();
    }

3.3 讀取結(jié)果示例

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

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

添加一些數(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. 獲取整個 ini 文件所有的 key  (  allKeys  )

 // 獲取所有節(jié)點和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é)點 (  childGroups )

 // 獲取所有節(jié)點
    QStringList str1 = fileSetting->childGroups();
    qDebug() <<"childGroups : " << str1 << endl;

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

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

注意

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

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

    // 獲取一個節(jié)點下的key值
    fileSetting->beginGroup("ip");    // 設(shè)置查找節(jié)點
    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() 判斷一個指定的鍵是否存在
  • remove() 刪除相關(guān)的鍵
  • clear() 刪除所有鍵
    fileSetting->beginGroup("ip");    // 設(shè)置查找節(jié)點
    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)化的簡單介紹,具有一定參考價值。如有不對之處,歡迎指出。
    2017-09-09
  • C++設(shè)計模式之建造者模式(Builder)

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

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

    C語言中形參和實參詳解及實例代碼

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

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

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

    Windows下CMake的下載與安裝過程

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

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

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

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

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

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

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

    C語言詳細講解注釋符號的使用

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

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

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

最新評論

文成县| 酒泉市| 吉木萨尔县| 库伦旗| 思南县| 南陵县| 丰台区| 舞钢市| 水城县| 庐江县| 仁寿县| 镇巴县| 惠水县| 太和县| 青岛市| 陆川县| 广水市| 玉林市| 石家庄市| 明水县| 九台市| 嘉义市| 泰安市| 衡阳市| 鸡西市| 泰州市| 泌阳县| 临江市| 唐河县| 安仁县| 内江市| 台湾省| 阿坝县| 托克托县| 安庆市| 涞源县| 岫岩| 科技| 商河县| 平利县| 溧水县|