范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Qt读写三种文件

  第一种INI配置文件
  .ini 文件是  Initialization File  的缩写,  即初始化文件  。
  除了windows现在很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要求。一般不用直接编辑这些.ini文件,应用程序的图形界面即可操作以实现相同的功能。它可以用来存放  软件信息,注册表信息  等。  读INI文件
  INI文件内容如下:  [conn] ip=127.0.0.1 port=8080 databaseversion=QSQLITE databasename=student username=YYC password=root
  qreadini.h文件内容如下:  #ifndef QREADINI_H #define QREADINI_H #include   #define DATACONFIG  QReadIni::getInstance()->getIniConfig()   typedef struct IniConfig {     QString ip;                //IP地址     QString port;              //端口     QString dataBaseVersion;   //数据库版本     QString dataBaseName;      //数据库名称     QString userName;          //用户名     QString passWord;          //密码 }IniConfig;   class QReadIni { public:     static QReadIni*getInstance();       void readIni();       const IniConfig &getIniConfig();   private:     QReadIni();       IniConfig iniConfig;       static QReadIni*instance; };   #endif // QREADINI_H
  qreadini.cpp文件内容如下:  #include "qreadini.h"   QReadIni*QReadIni::instance = NULL;   QReadIni *QReadIni::getInstance() {     if(instance == NULL)     {         instance = new QReadIni();     }     return instance; }   QReadIni::QReadIni() {     this->readIni(); }   void QReadIni::readIni() {     QSettings * configIniRead = new QSettings("config.ini",QSettings::IniFormat);//初始化读取Ini文件对象     iniConfig.ip = configIniRead->value("conn/ip").toString();                          //IP地址     iniConfig.port = configIniRead->value("conn/port").toString();                      //端口     iniConfig.dataBaseVersion = configIniRead->value("conn/databaseversion").toString();//数据库版本     iniConfig.dataBaseName = configIniRead->value("conn/databasename").toString();      //数据库名称     iniConfig.userName = configIniRead->value("conn/username").toString();              //用户名     iniConfig.passWord = configIniRead->value("conn/password").toString();              //密码       delete configIniRead; }   const IniConfig &QReadIni::getIniConfig() {     return iniConfig; }写ini文件#include    #include    int main(int argc, char *argv[])   {      QCoreApplication a(argc, argv);      //Qt中使用QSettings类读写ini文件      //QSettings构造函数的第一个参数是ini文件的路径,第二个参数表示针对ini文件,第三个参数可以缺省      QSettings *configIniWrite = new QSettings("hahaya.ini", QSettings::IniFormat);      //向ini文件中写入内容,setValue函数的两个参数是键值对      //向ini文件的第一个节写入内容,ip节下的第一个参数      configIniWrite->setValue("/ip/first", "192.168.0.1");      //向ini文件的第一个节写入内容,ip节下的第二个参数      configIniWrite->setValue("ip/second", "127.0.0.1");      //向ini文件的第二个节写入内容,port节下的第一个参数      configIniWrite->setValue("port/open", "2222");      //写入完成后删除指针      delete configIniWrite;            return a.exec();   }
  第二种JSON文件{     "conn": {         "ip": "127.0.0.1",         "port": "8080",         "databaseversion": "QSQLITE",         "databasename": "student",         "username": "YYC",         "password": "root"     } }
  qreadjson.h文件内容如下  #ifndef QREADJSON_H #define QREADJSON_H   #include  #include  #include  #include  #include  #include    #define JSONCONFIG  QReadJson::getInstance()->getJsonConfig()   typedef struct JsonConfig {     QString ip;                //IP地址     QString port;              //端口     QString dataBaseVersion;   //数据库版本     QString dataBaseName;      //数据库名称     QString userName;          //用户名     QString passWord;          //密码 }JsonConfig;     class QReadJson { public:       static QReadJson * getInstance();       bool readJson();       const JsonConfig &getJsonConfig();   private:     QReadJson();       static QReadJson * instance;       JsonConfig jsonConfig; };   #endif // QREADJSON_H
  qreadjson.cpp内容如下:  #include"qreadjson.h"   QReadJson * QReadJson::instance = NULL;   QReadJson *QReadJson::getInstance() {     if(NULL == instance)     {         instance = new QReadJson();     }       return instance; }   QReadJson::QReadJson() {     this->readJson(); }   bool QReadJson::readJson() {     QString strJson;       QFile *file=new QFile("config.json");     if(file->open(QIODevice::ReadOnly | QIODevice::Text))     {         strJson = file->readAll();         file->close();     }     else     {         return false;     }     file->close();       QJsonDocument jsonDom = QJsonDocument::fromJson(strJson.toUtf8());     QJsonObject jsonObject = jsonDom.object();     QJsonValue jsonValue = jsonObject.value(QString("conn"));         QJsonObject objectItem = jsonValue.toObject();       jsonConfig.ip = objectItem["ip"].toString();     jsonConfig.port = objectItem["port"].toString();     jsonConfig.dataBaseVersion = objectItem["databaseversion"].toString();     jsonConfig.dataBaseName = objectItem["databasename"].toString();     jsonConfig.userName = objectItem["username"].toString();     jsonConfig.passWord = objectItem["password"].toString();       delete file;     return true; }   const JsonConfig &QReadJson::getJsonConfig() {     return jsonConfig; }第三种是读取xml文件:<?xml version="1.0" encoding="UTF-8"?> --    127.0.0.1  8080  QSQLITE  student.db  root  123    
  qreadxml.h文件内容如下:  #ifndef QREADXML_H #define QREADXML_H #include #include #include #include #include   #define XMLCONFIG  QReadXml::getInstance()->getXmlConfig()   typedef struct XmlConfig {     QString ip;                //IP地址     QString port;              //端口     QString dataBaseVersion;   //数据库版本     QString dataBaseName;      //数据库名称     QString userName;          //用户名     QString passWord;          //密码 }XmlConfig;   class QReadXml { public:     static QReadXml * getInstance();       bool readXML();       const XmlConfig &getXmlConfig();   private:     QReadXml();       XmlConfig xmlConfig;       static QReadXml * instance; };   #endif // QREADXML_H
  点击领取Qt学习资料+视频教程~「链接」
  qreadxml.cpp文件如下  #include "qreadxml.h"   QReadXml *QReadXml::instance = NULL;   QReadXml *QReadXml::getInstance() {     if(NULL == instance)     {         instance = new QReadXml();     }       return instance; }   QReadXml::QReadXml() {     this->readXML(); }   bool QReadXml::readXML() {     int countData = 0;     QDomDocument dom;     QFile *file=new QFile("config.xml");     if(file->open(QIODevice::ReadOnly))     {         if(!dom.setContent(file))  //将该xml文件导入到dom中         {             file->close();             return false;         }     }     else     {         return false;     }     file->close();     QDomElement docElem = dom.documentElement();   //返回根元素       QDomNode node = docElem.firstChild();          //返回根节点的第一个子节点       while(!node.isNull())                        //如果节点不为空     {         if(node.isElement())                     //如果节点是元素         {             QDomElement element=node.toElement();//将其转化为元素               QDomNodeList list=element.childNodes();//取出该元素的所有子节点放到list中               //将子节点元素全部取出来             for(int i = 0; i < list.count(); i ++)             {                 QDomNode domNode = list.at(i);                 if(domNode.isElement())                 {                     //取出我们所要的数据                     switch(i)                     {                     case 0:xmlConfig.ip = domNode.toElement().text();break;                     case 1:xmlConfig.port = domNode.toElement().text();break;                     case 2:xmlConfig.dataBaseVersion = domNode.toElement().text();break;                     case 3:xmlConfig.dataBaseName = domNode.toElement().text();break;                     case 4:xmlConfig.userName = domNode.toElement().text();break;                     case 5:xmlConfig.passWord = domNode.toElement().text();break;                     }                 }             }         }           countData++;         node = node.nextSibling(); //下一个兄弟节点     }       return countData > 0 ? true : false; }   const XmlConfig &QReadXml::getXmlConfig() {     return xmlConfig; }

雷军兑现承诺,逐步蚕食苹果高端份额,小米13系列成为大功臣!雷军不止一次在发布会上说过,希望可以在高端市场学习苹果对标苹果超越苹果,曾经遭到不少网友的质疑。现在有一份数据公布,证明雷军从来都不是说说而已,真正做到逐步蚕食苹果高端市场份额,小周末今晨发生了什么?YiMagazine马云不再是蚂蚁集团及旗下多家控股公司实控人股权结构调整是否能让蚂蚁安全上市?1月8日,据阿里巴巴集团在港交所公告称,马云将不再控制君瀚和君澳持有的蚂蚁集团多数投票权。早前一天,蚂蚁浅谈mqtt协议与终端监测设备结合摘要MQTT是一个基于客户端服务器的消息发布订阅传输协议,优点是轻量,简单,开放和易于实现的,这样的特点在于物联网设备中就十分适用,这也是它在物联网中被广泛应用的原因之一。而物联网从特色文旅到新能源,此次青岛之行还有多少惊喜等待我们发现?2023年1月7日,调研参观行程的第二天,甘泉堡经开区领导干部一行,对墨风企业管理有限公司,特锐德特来电电器股份有限公司进行了深度走访,颇具特色的文旅新城及新能源板块,成为此次青岛有什么用的无用之用算法是近年的热词,我一直想知道技术专家们算出一些什么。这两天断断续续地读英国人写的一本算法的力量,看到代码和算法的逻辑,感觉跟易经的卦辞爻辞逻辑异曲同工。比如说,人际关系的算法如果2023款比亚迪海豚续航420KM快充0。5h售12。38万!表现怎么样?桃李春风一杯酒,江湖夜雨十年灯,随着汽车市场的快速发展,目前两大阵营,一方面是传统燃油汽车品牌,另一方面是纯电新起之秀,尤其是我们自主品牌发展越来越好,比如比亚迪蔚来小鹏汽车理想等支付宝集五福活动来了,攻略奉上!时间来到农历腊月中下旬,距离过年只剩不到两周的时间了。众所周知,年前这段时间是主流App进行红包大战的时候,玩法也非常多样。而支付宝的集五福活动,算是必备的一项传统节目了。2016元旦我放弃了小米,选择入手iPhone14pro之后,体验不吐不快事先声明,如果你是一名老果粉,如果因为小米13pro的颜值就被吸引过去选择入手,那么我劝你最好别尝试,你是真的很难适应小米的系统,我就是活生生的例子,倒不是说有多么不好,而是你习惯三年引颈以待,大湾区工作模式回来了!翘首以盼的通关终于在三年后的这个周末来到!1月8日起,香港与内地实施首阶段通关,深圳湾口岸福田口岸文锦渡口岸蛇口口岸深圳机场福永码头在第一阶段恢复运行,深圳湾福田文锦渡三口岸每日预出入境办恢复办证首个工作日,奉贤相关业务量迎来高峰新民晚报讯(记者李一能通讯员毕迎春)随着国家防疫政策的变化,从月日起,新冠病毒感染实施乙类乙管,上海公安出入境管理部门的政策也在今天随之调整优化,包括有序恢复受理审批中国公民出国旅樊少皇携二婚老婆拍写真,小10岁娇妻穿旗袍太美了,尽显窈窕曲线旗袍可以最大程度地展示东方女性的婀娜多姿与优雅气韵,各个年龄层的女性都可以穿,可以说是老少咸宜。少女时代穿,可以穿出少年人的青春靓丽与娇俏动人稍微年长以后,穿它可以最大限度地展示出
焦点科技旗下百卓网络科技产品入选江苏省工业软件拟推广名单中证网讯(记者董添)10月27日,记者从焦点科技获悉,子公司百卓网络科技开发的百卓轻云ERP软件成功入选江苏省工业软件优秀产品和应用解决方案拟推广名单,并获得经营管理类别的推荐。目每日书摘微风1。人心疲惫的时候,身体总要做些什么来让它休息一下,忙忙碌碌中反而放下了真正令人下坠的困扰。八月长安最好的我们微风2。既然我们总是擦肩,那么思念有什么值得挂念,我会用怀念的姿态国防部称日方应履行政治承诺不得插手台湾问题10月27日下午,国防部举行例行记者会,国防部新闻局副局长国防部新闻发言人谭克非大校答记者问。记者据日本共同社报道,日政府拟考虑在年底修订的国家安全保障战略中,针对台海局势写明不承中证协项目入选社会助力巩固拓展脱贫攻坚成果同乡村振兴有机衔接典型案例中证网讯(记者胡雨)据中国证券业协会(以下简称协会)10月26日消息,近日,协会在隰县设立特困群众帮扶公益基金助力巩固脱贫攻坚成果首批入选国家乡村振兴局社会帮扶助力巩固拓展脱贫攻坚德媒称德国政府已批准中企入股汉堡港,外交部合作是互惠互利的环球时报驻德国特约记者昭东联邦政府给中企开绿灯。据德国北德广播电视台(NDR)26日报道,德国政府当天已批准中国航运公司中远集团入股汉堡港集装箱码头。但德国政府目前只批准中企持有汉拉杰什助力中印两国医药行业实现互惠共赢继去年百年大党老外讲故事百集融媒体产品,境内外播放量突破16亿之后,老外讲故事迎来第二季海外员工看中国。100位不同国度的海外员工,用最接地气的方式,讲述自己在中国央企和上海企业海富豪多出于这三大星座,你服了吗?富豪多出于这三大星座,你服了吗?摩羯座摩羯这个星座几乎没有什么弱点全方位无死角的优秀各方面能力值都是满分更重要的是Ta的心性比同龄人成熟做事情也更加踏实身边的人都觉得Ta靠谱这样身酒桌上敬酒,别人左手拿杯有什么暗示?早懂早好,避免得罪人酒桌上敬酒,别人左手拿杯有什么暗示?早懂早好,避免得罪人大家平时在和朋友家人聚在一起吃饭的时候,心情都是很放松的,都是自己人,不讲那些条条框框的规矩,想说什么都是直来直往,喝酒也是谭咏麟街头偶遇周润发!67岁发哥皱纹如树皮,穿百元衣太有型饿了吗?戳右边关注我们,每天给您送上最新出炉的娱乐硬核大餐!10月27日,谭咏麟发布一则动态,称自己在街头偶遇周润发,还称周润发是一位淡泊名利的老友,言语之间满是对周润发的夸奖赞美把尊重女性刻在了骨子里,拯救女星于水火之中,他们真有种不知道这个世道怎么了?大众一直以宣扬男女平等的名义,恶意扩大普信男恶臭男物化女性男少部分群体,特别是在娱乐圈。以至于把所有的男性都一杆子打倒了。但其实娱乐圈也有不少尊重女性的绅士,奥马电器冰箱业务发展稳健前三季度实现净利3。28亿元中证网讯(王珞)10月26日晚间,奥马电器(002668)发布2022年三季度业绩报告,公司前三季度累计实现营业收入59。28亿元,由于剥离了金融科技业务聚焦冰箱主业,实现归属于上