第一种INI配置文件 。ini文件是InitializationFile的缩写,即初始化文件。 除了windows现在很多其他操作系统下面的应用软件也有。ini文件,用来配置应用软件以实现不同用户的要求。一般不用直接编辑这些。ini文件,应用程序的图形界面即可操作以实现相同的功能。它可以用来存放软件信息,注册表信息等。读INI文件 INI文件内容如下:〔conn〕ip127。0。0。1port8080databaseversionQSQLITEdatabasenamestudentusernameYYCpasswordroot qreadini。h文件内容如下:ifndefQREADINIHdefineQREADINIHincludeQSettingsdefineDATACONFIGQReadIni::getInstance()getIniConfig()typedefstructIniConfig{QStringip;IP地址QStringport;端口QStringdataBaseVersion;数据库版本QStringdataBaseName;数据库名称QStringuserName;用户名QStringpassWord;密码}IniConfig;classQReadIni{public:staticQReadInigetInstance();voidreadIni();constIniConfiggetIniConfig();private:QReadIni();IniConfiginiConfig;staticQReadIniinstance;};endifQREADINIH qreadini。cpp文件内容如下:includeqreadini。hQReadIniQReadIni::instanceNULL;QReadIniQReadIni::getInstance(){if(instanceNULL){instancenewQReadIni();}returninstance;}QReadIni::QReadIni(){thisreadIni();}voidQReadIni::readIni(){QSettingsconfigIniReadnewQSettings(config。ini,QSettings::IniFormat);初始化读取Ini文件对象iniConfig。ipconfigIniReadvalue(connip)。toString();IP地址iniConfig。portconfigIniReadvalue(connport)。toString();端口iniConfig。dataBaseVersionconfigIniReadvalue(conndatabaseversion)。toString();数据库版本iniConfig。dataBaseNameconfigIniReadvalue(conndatabasename)。toString();数据库名称iniConfig。userNameconfigIniReadvalue(connusername)。toString();用户名iniConfig。passWordconfigIniReadvalue(connpassword)。toString();密码deleteconfigIniRead;}constIniConfigQReadIni::getIniConfig(){returniniConfig;}写ini文件includeQtCoreQCoreApplicationincludeQSettingsintmain(intargc,charargv〔〕){QCoreApplicationa(argc,argv);Qt中使用QSettings类读写ini文件QSettings构造函数的第一个参数是ini文件的路径,第二个参数表示针对ini文件,第三个参数可以缺省QSettingsconfigIniWritenewQSettings(hahaya。ini,QSettings::IniFormat);向ini文件中写入内容,setValue函数的两个参数是键值对向ini文件的第一个节写入内容,ip节下的第一个参数configIniWritesetValue(ipfirst,192。168。0。1);向ini文件的第一个节写入内容,ip节下的第二个参数configIniWritesetValue(ipsecond,127。0。0。1);向ini文件的第二个节写入内容,port节下的第一个参数configIniWritesetValue(portopen,2222);写入完成后删除指针deleteconfigIniWrite;returna。exec();} 第二种JSON文件{conn:{ip:127。0。0。1,port:8080,databaseversion:QSQLITE,databasename:student,username:YYC,password:root}} qreadjson。h文件内容如下ifndefQREADJSONHdefineQREADJSONHincludeQStringincludeQFileincludeQIODeviceincludeQDomNodeListincludeQJsonDocumentincludeQJsonObjectdefineJSONCONFIGQReadJson::getInstance()getJsonConfig()typedefstructJsonConfig{QStringip;IP地址QStringport;端口QStringdataBaseVersion;数据库版本QStringdataBaseName;数据库名称QStringuserName;用户名QStringpassWord;密码}JsonConfig;classQReadJson{public:staticQReadJsongetInstance();boolreadJson();constJsonConfiggetJsonConfig();private:QReadJson();staticQReadJsoninstance;JsonConfigjsonConfig;};endifQREADJSONH qreadjson。cpp内容如下:includeqreadjson。hQReadJsonQReadJson::instanceNULL;QReadJsonQReadJson::getInstance(){if(NULLinstance){instancenewQReadJson();}returninstance;}QReadJson::QReadJson(){thisreadJson();}boolQReadJson::readJson(){QStringstrJson;QFilefilenewQFile(config。json);if(fileopen(QIODevice::ReadOnlyQIODevice::Text)){strJsonfilereadAll();fileclose();}else{returnfalse;}fileclose();QJsonDocumentjsonDomQJsonDocument::fromJson(strJson。toUtf8());QJsonObjectjsonObjectjsonDom。object();QJsonValuejsonValuejsonObject。value(QString(conn));QJsonObjectobjectItemjsonValue。toObject();jsonConfig。ipobjectItem〔ip〕。toString();jsonConfig。portobjectItem〔port〕。toString();jsonConfig。dataBaseVersionobjectItem〔databaseversion〕。toString();jsonConfig。dataBaseNameobjectItem〔databasename〕。toString();jsonConfig。userNameobjectItem〔username〕。toString();jsonConfig。passWordobjectItem〔password〕。toString();deletefile;returntrue;}constJsonConfigQReadJson::getJsonConfig(){returnjsonConfig;}第三种是读取xml文件:lt;?xmlversion1。0encodingUTF8?datadatabaseip127。0。0。1ipport8080portdatabaseversionQSQLITEdatabaseversiondatabasenamestudent。dbdatabasenameusernamerootusernamepassword123passworddatabasedata qreadxml。h文件内容如下:ifndefQREADXMLHdefineQREADXMLHincludeQStringincludeQtXmlincludeQFileincludeQIODeviceincludeQDomNodeListdefineXMLCONFIGQReadXml::getInstance()getXmlConfig()typedefstructXmlConfig{QStringip;IP地址QStringport;端口QStringdataBaseVersion;数据库版本QStringdataBaseName;数据库名称QStringuserName;用户名QStringpassWord;密码}XmlConfig;classQReadXml{public:staticQReadXmlgetInstance();boolreadXML();constXmlConfiggetXmlConfig();private:QReadXml();XmlConfigxmlConfig;staticQReadXmlinstance;};endifQREADXMLH 点击领取Qt学习资料视频教程链接 qreadxml。cpp文件如下includeqreadxml。hQReadXmlQReadXml::instanceNULL;QReadXmlQReadXml::getInstance(){if(NULLinstance){instancenewQReadXml();}returninstance;}QReadXml::QReadXml(){thisreadXML();}boolQReadXml::readXML(){intcountData0;QDomDocumentdom;QFilefilenewQFile(config。xml);if(fileopen(QIODevice::ReadOnly)){if(!dom。setContent(file))将该xml文件导入到dom中{fileclose();returnfalse;}}else{returnfalse;}fileclose();QDomElementdocElemdom。documentElement();返回根元素QDomNodenodedocElem。firstChild();返回根节点的第一个子节点while(!node。isNull())如果节点不为空{if(node。isElement())如果节点是元素{QDomElementelementnode。toElement();将其转化为元素QDomNodeListlistelement。childNodes();取出该元素的所有子节点放到list中将子节点元素全部取出来for(inti0;ilist。count();i){QDomNodedomNodelist。at(i);if(domNode。isElement()){取出我们所要的数据switch(i){case0:xmlConfig。ipdomNode。toElement()。text();break;case1:xmlConfig。portdomNode。toElement()。text();break;case2:xmlConfig。dataBaseVersiondomNode。toElement()。text();break;case3:xmlConfig。dataBaseNamedomNode。toElement()。text();break;case4:xmlConfig。userNamedomNode。toElement()。text();break;case5:xmlConfig。passWorddomNode。toElement()。text();break;}}}}countData;nodenode。nextSibling();下一个兄弟节点}returncountData0?true:false;}constXmlConfigQReadXml::getXmlConfig(){returnxmlConfig;}