在開發中,將一些關鍵的東西寫入或者讀取配置文件中,本文主要就是使用了QSettings的setValue和value。
QSettings可以存儲一系列設置。每個設置包括指定設置名稱(鍵)的一個字符串和一個與該鍵關聯的QVariant存儲數據。使用setValue()可以實現一個設置。
用戶通常希望應用程序在會話中記住其設置(窗口大小和位置,選項等)。此信息通常存儲在Windows上的系統注冊表中,以及macOS和iOS 上的屬性列表文件中。在Unix系統上,在沒有標准的情況下,許多應用程序(包括KDE應用程序)使用INI文本文件。在項目中,有時需要在程序之外設定一些初始值,一般這些初始值會寫入到配置文件中。
ini配置文件格式:ini文件由組、鍵、值組成。
Qt是通過QSettings類來操作配置文件的。 QSettings的API基於QVariant,允許您以最少的工作量保存大多數基於值的類型,例如QString,QRect和QImage。
指定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