欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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文件路徑并將格式設置為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");
    //設置當前分組結(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文件路徑并將格式設置為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文件路徑并將格式設置為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");    // 設置查找節(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");    // 設置查找節(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++?JSON庫?nlohmann::basic_json::accept的用法解析

    C++?JSON庫?nlohmann::basic_json::accept的用法解析

    nlohmann::basic_json::accept 是 Nlohmann JSON 庫中的一個方法,它用于檢查一個字符串是否可以解析為有效的 JSON,這篇文章主要介紹了C++?JSON庫nlohmann::basic_json::accept的用法,需要的朋友可以參考下
    2023-06-06
  • Qt連接MySQL數(shù)據(jù)庫的實現(xiàn)(保姆級成功版教程)

    Qt連接MySQL數(shù)據(jù)庫的實現(xiàn)(保姆級成功版教程)

    本文主要介紹了Qt連接MySQL數(shù)據(jù)庫的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • C語言基礎 strlen 函數(shù)

    C語言基礎 strlen 函數(shù)

    這篇文章主要介紹了C語言基礎 strlen 函數(shù),在C 語言中,char 字符串也是一種非常重要的數(shù)據(jù)類型,我們可以使用 strlen 函數(shù)獲取字符串長度,這就是C語言strlen 函數(shù)的作用,下面我們來簡單介紹該內(nèi)容,需要的朋友可以參考以下
    2021-10-10
  • c++與c中的數(shù)組初始化默認值如何為0

    c++與c中的數(shù)組初始化默認值如何為0

    這篇文章主要介紹了c++與c中的數(shù)組初始化默認值如何為0問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • c語言排序之歸并排序(遞歸和非遞歸)

    c語言排序之歸并排序(遞歸和非遞歸)

    這篇文章主要介紹了?c語言排序之歸并排序(遞歸和非遞歸),歸并就是把兩個或多個序列合并,本文主要介紹二路歸并,下文相關(guān)資料需要的小伙伴可以參考一下
    2022-04-04
  • C++實現(xiàn)迷宮生成與解決

    C++實現(xiàn)迷宮生成與解決

    這篇文章主要為大家詳細介紹了C++實現(xiàn)迷宮生成與解決,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • C++ 中將一維數(shù)組轉(zhuǎn)成多維的三種方式示例詳解

    C++ 中將一維數(shù)組轉(zhuǎn)成多維的三種方式示例詳解

    這篇文章主要介紹了C++ 中將一維數(shù)組轉(zhuǎn)成多維的三種方式,每種方式結(jié)合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-12-12
  • 數(shù)組和指針的區(qū)別深入剖析

    數(shù)組和指針的區(qū)別深入剖析

    在C/C++中,指針和數(shù)組在很多地方可以互換使用,這使得我們產(chǎn)生一種錯覺,感覺數(shù)組和指針兩者是完全等價的,事實上數(shù)組和指針是有很大的區(qū)別的
    2012-11-11
  • 介紹C語言程序中的注釋等輔助語句如何使用

    介紹C語言程序中的注釋等輔助語句如何使用

    C語言中分為單行注釋和多行注釋:單行注釋?以?//?開始的這一行文本,可能不被編譯器所支持;多行注釋從?/*?到?*/之間的所有文本,不支持嵌套,下面讓我們詳細來了解
    2022-04-04
  • QT委托代理機制之Model?View?Delegate使用方法詳解

    QT委托代理機制之Model?View?Delegate使用方法詳解

    這篇文章主要介紹了QT委托代理機制之Model?View?Delegate的使用方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08

最新評論