Qt -- QSetting類/ini配置文件的讀寫操作


在開發中,將一些關鍵的東西寫入或者讀取配置文件中,本文主要就是使用了QSettings的setValue和value。

QSettings可以存儲一系列設置。每個設置包括指定設置名稱(鍵)的一個字符串和一個與該鍵關聯的QVariant存儲數據。使用setValue()可以實現一個設置。 

用戶通常希望應用程序在會話中記住其設置(窗口大小和位置,選項等)。此信息通常存儲在Windows上的系統注冊表中,以及macOS和iOS 上的屬性列表文件中。在Unix系統上,在沒有標准的情況下,許多應用程序(包括KDE應用程序)使用INI文本文件。在項目中,有時需要在程序之外設定一些初始值,一般這些初始值會寫入到配置文件中。

ini配置文件格式:ini文件由組、鍵、值組成。


Qt是通過QSettings類來操作配置文件的。 QSettings的API基於QVariant,允許您以最少的工作量保存大多數基於值的類型,例如QStringQRectQImage

指定QSettings使用的存儲格式:

配置文件寫操作:

void MainWindow::writeConfig()
{
    //創建ini配置文件
    iniFile = new QSettings("sysConfig.ini", QSettings::IniFormat);
    //組開始
    iniFile->beginGroup(tr("Tom"));
    //設置鍵值對
    iniFile->setValue(tr("age"), tr("23"));
    iniFile->setValue(tr("gender"), tr("male"));
    iniFile->setValue(tr("id"), tr("00001"));
    //獲取當前組
    QString group=iniFile->group();
    qDebug().noquote()<<"group:"<<group;
    //組結束
    iniFile->endGroup();
 
    iniFile->beginGroup(tr("Helen"));
    iniFile->setValue(tr("age"), tr("20"));
    iniFile->setValue(tr("gender"), tr("female"));
    iniFile->setValue(tr("id"), tr("00002"));
    iniFile->endGroup();
}

  

配置文件讀操作 :

 

void MainWindow::readConfig()
{
    //獲取配置文件名
    QString fileName=iniFile->fileName();
    qDebug().noquote()<<"fileName:"<<fileName;
 
    //判斷鍵是否存在
    bool key=iniFile->contains("Helen/age");
    qDebug().noquote()<<"Helen/age is "<<key;
 
    //移除鍵
    iniFile->remove("Helen/age");
 
    //讀取鍵值對
    int age = iniFile->value("Tom/age").toInt();
    QString gender = iniFile->value("Tom/gender").toString();
    QString id = iniFile->value("Tom/id").toString();
    qDebug()<<age<<gender<<id;
}

  

例:

    //test
    QString INIPath = "D://";
    QString ImageName = "";
    
   // 獲取當前時間
    QDateTime time = QDateTime::currentDateTime();
    QString dateTime = time.toString("MMddhhmmsszzz");
    QString str= QString("Data%1.dat").arg(dateTime);

    //保存INI文件
    //qt寫入ini配置文件
    QSettings settings(INIPath + "PicTime.ini",QSettings::IniFormat);  //創建ini配置文件
    settings.beginGroup("TimeRec");  //組開始
    settings.setValue(dateTime,QDateTime::currentDateTime().toString("yyyyMMdd-hhmmsszzz"));  //設置鍵值任務
    settings.endGroup();   //組結束

  

 

https://blog.csdn.net/mars_xiaolei/article/details/97385548

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM