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

Qt开发文件的读写操作

  引言
  文件的读写是很多应用程序具有的功能,甚至某些应用程序就是围绕着某一种格式文件的处理而开发的,所以文件读写是应用程序开发的一个基本功能。
  Qt 提供了两种读写纯文本文件的基本方法: 用  QFile 类 的 IODevice 读写功能直接进行读写 利用  QFile  和  QTextStream  结合起来,用流(Stream)的方法进行文件读写。 一、文件读操作
  (1)使用QFile类
  Qt封装了QFile类,方便我们对文件进行操作,可以按照如下的步骤进行: 使用QFile加载文件对象 打开文件 file.open(打开方式) 操作文件 关闭文件 file.close()
  实例:点击读写文件按钮,读取文件内容到textEdit中
  1 设置ui界面
  2 在widget.cpp中编辑代码(QFileDialog类是打开文件)    //点击选取文件按钮,弹出文件对话框     connect(ui->pushButton,&QPushButton::clicked,[=](){     QString path=  QFileDialog::getOpenFileName(this,"打开文件","C:/Users/WFD/Desktop");    //将路径显示在lineEdit中    ui->lineEdit->setText(path);        //读取文件内容,放入textEdit中       QFile file(path);//参数就是文件的路径       //设置打开方式       file.open(QIODevice::ReadOnly);       //用QByteArray类去接收读取的信息       QByteArray array=file.readAll();       //将读取到的数据放入textEdit中       ui->textEdit->setText(array);       //关闭文件对象       file.close();
  注意:在设置打开方式的时候
  QFile::open() 函数打开文件时需要传递  QIODevice::OpenModeFlag   枚举类型的参数,决定文件以什么方式打开,QIODevice::OpenModeFlag 类型的主要取值如下:QIODevice::ReadOnly  //以只读方式打开文件,用于载入文件。 QIODevice::WriteOnly  //以只写方式打开文件,用于保存文件。 QIODevice::ReadWrite //以读写方式打开。 QIODevice::Append  //以添加模式打开,新写入文件的数据添加到文件尾部。 QIODevice::Truncate //以截取方式打开文件,文件原有的内容全部被删除。 QIODevice::Text       //以文本方式打开文件,读取时" "被自动翻译为换行符,写入时字符串结束符会自动翻译为系统平台的编码,如 Windows 平台下是"r "。  这些取值可以组合,例如 QIODevice::ReadOnly | QIODevice::Text 表示以只读和文本方式打开文件。
  注意:在操作文件时
  用只读方式打开一个文本文件,然后用 readAll()方法  将文件内容一次全部读取出来,返回值是字节数组QByteArray。QByteArray用来存放二进制数据,如果想要看文字内容需要转换成QString。(有时候系统会自动转换)
  我们也可以使用readLine方法一次读取一行,然后每次对一行文字进行操作:(用file.atEnd判断是否读到最后一行)        QByteArray array;       while(!file.atEnd())       {            array+=file.readLine();//+=叠加读过的行       }
  (2)使用QTextStream类
  如果操作的是文本文件,Qt还专门封装了一个处理文本流的类,我们可以用它来读取文本内容     //点击选取文件按钮,弹出文件对话框     connect(ui->pushButton,&QPushButton::clicked,[=](){       QString path=  QFileDialog::getOpenFileName(this,"打开文件","C:/Users/WFD/Desktop");       //将路径放在lineEdit中       ui->lineEdit->setText(path);       //读取文件内容,放入textEdit中       QFile file(path);//参数就是文件的路径       //设置打开方式       file.open(QIODevice::ReadOnly);       //用QTextStream类去读取文本信息      QTextStream QS(&file);      //用QString类去接收读取的信息      QString array=QS.readAll();       //将读取到的数据放入textEdit中       ui->textEdit->setText(array);       //关闭文件对象       file.close();二,文件写操作
  (1)使用QFile类
  使用QFile同样可以对文件进行写操作:
  (2)使用QTextStream类
  QTextStream类对操作符进行了重载,我们可以通过 << 操作符将字符串流入文本文件:
  三,文件信息读取
  除了对文件的读写操作,Qt还封装了QFileInfo类帮助我们获取文件的元数据,比如文件大小、后缀名、创建时间、最后修改时间等等:
  拓展:  各编码转换 QString -> QByteArray      QString.toUtf8();  QByteArray -> std::string  QByteArray.toStdString();  std::string -> char *        string.date();常用静态函数 QFileDialog::getOpenFileName()    //获取指定文件路径名返回QString QFileDialog::getExistingDirectory()  //获取指定路径返回QString QFileDialog::getSaveFileName()    //获取指定保存路径名返回QString
  QT配置ini文件的建立,读取,写入操作
  1 ini文件介绍
  .ini 文件是Initialization File的缩写,即初始化文件。
  除了windows现在很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要求。一般不用直接编辑这些.ini文件,应用程序的图形界面即可操作以实现相同的功能。它可以用来存放软件信息,注册表信息等。
  2 ini文件格式
  INI文件由节、键、值组成。 节    [section]   参数(键=值)  name=value
  下面是一个ini文件的例子 [Section1 Name]     KeyName1=value1     KeyName2=value2     ...     [Section2 Name]     KeyName21=value21     KeyName22=value22 
  其中:[Section1 Name]用来表示一个段落。因为INI文件可能是项目中共用的,所以使用[Section Name]段名来区分不同用途的参数区。例如:[Section1 Name]表示传感器灵敏度参数区;[Section2 Name]表示测量通道参数区等等。
  点击领取Qt学习资料+视频教程~「链接」
  注解:使用分号表示(;)。在分号后面的文字,直到该行结尾都全部为注解。
  3 Qt写ini文件  #include  #include  int main(int argc, char *argv[]) {     QApplication 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(); }
  运行程序后,打开程序目录下的hahaya.ini文件,结果如下图所示:
  4 Qt读ini文件  #include  #include  #include int main(int argc, char *argv[]) {       QApplication a(argc, argv);       QSettings *configIniRead = new QSettings("hahaya.ini", QSettings::IniFormat);       //将读取到的ini文件保存在QString中,先取值,然后通过toString()函数转换成QString类型       QString ipResult = configIniRead->value("/ip/second").toString();       QString portResult = configIniRead->value("/port/open").toString();       //打印得到的结果       qDebug() << ipResult;       qDebug() << portResult;       //读入入完成后删除指针       delete configIniRead;       return a.exec(); }

羽生结弦凭什么受到我们的追捧羽生结弦是一个日本人,一个花滑运动员,一个二十七岁的年轻人,可能对于运动员来说已经是老人了,那么他凭什么受到我们中国人的追捧,甚至央视都破例称赞他了呢。作为一名伟大的运动员,他已经冬奥赛场上,这些运动员都是华裔2月7日,华裔姑娘陈楷雯以一首梁山伯与祝英台小提琴协奏曲作为花式滑冰团体赛女子单人滑自由滑的音乐,助美国队拿下花滑团体赛银牌。陈楷雯并非北京冬奥会唯一的华裔运动员,在冬奥赛场上,华金州勇士要复制休斯顿火箭的神迹了吗?时至今日,已经是大年初八,对于人们来说,不幸的是疫情依旧在全球肆虐,对于NBA球迷来说,幸运的是赛事依旧如火如荼的进行,而对于勇士球迷来说,可谓是过了个好年。自1月22日以来,勇士NBA这些球星肤色是白色但其实都是黑人!你被误导了多久?我们都说耳听为虚眼见为实,理论上是如此。但是有时候我们看到的,都不一定是真的,比如NBA球员的肤色就会欺骗我们。今天这些球星,肤色真的是白色,很多人以为是白人球员,实际上是黑人球员ampampquot体操皇后ampampquot刘璇36岁嫁穷小子,40岁生2胎,光环背后充满眼泪刘璇文懒虫说娱编辑懒虫说娱2000年,刘璇出现在中国奥运会女子体操名单上,那时候她已经有21岁。要知道,在这之前能够参加比赛的选手都是在17岁之内的年轻女孩,21岁已经算是高龄选手陈妍希和儿子一起做瑜珈,恢复得越来越漂亮,应该快复出了近日,陈妍希在社交平台上,晒出自己和瑜珈教练的合影。看起来精神很好,长得越来越漂亮了。陈妍希对亲子瑜珈非常热衷,她经常都有晒出自己和儿子一起练瑜珈的合照。亲子瑜珈可以减肥瘦身,也可时间管理保持专注力的秘诀原来是这两件事工作很忙的人,常常要加班到很晚,所以睡眠时间不得不相应缩短。一越想缩短睡眠,第二天越会浪费更多时间通过缩短睡眠时间工作和学习,看似很努力,但我并不推荐这样做。因为这样一来,工作学习中国足球发展深度反思一个不能和四个坚持记者陈永报道2022年2月6日,中国女足亚洲杯夺冠,这是春节期间中国足球的一件盛事,最终也火爆到了破圈的程度,无数非足球迷也加入讨论行列。女足夺冠之所以引发轰动,除了自身的努力所创山东男篮险胜,广厦球员主帅轻蔑一笑!高速无耻放弃引援惹怒球迷北京时间1月26日,距离新年已经是越来越近了,小编首先在这里祝球迷朋友们新春快乐,万事大吉!昨天是小年夜,CBA联赛将开始了新春大战,其中最为球迷关注的比赛,无疑是山东高速男篮与豪如果你是高血压,每天都吃氨氯地平,了解清楚这三件事很重要高血压是一种常见的疾病。如果不积极治疗的话,可能会引起其他并发症。另外高血压并发症的治疗是一个漫长的过程,需要患者长期坚持服药才能有效控制病情。因此预防必不可少,平时应积极做好各项怎么吃都不胖?多是胃强脾虚,解读名医名方,改善脾虚,压胃火在我们日常的生活中,总有一些人,不管怎么吃,身上都不长肉。就好像,只是味觉得到满足,身体营养却有些跟不上,并且都会觉得这是消化的问题。今天结合张仲景的名方,来跟大家讨论讨论是怎么一
七彩虹将星X15AT23今日开启预约,RTX4060版本6999元IT之家2月16日消息,七彩虹将星X15AT现已迎来3款新品,均搭载RTX40系列显卡13代酷睿HX系列处理器。其中,将星X15AT系列RTX4060版本售价6999元,RTX40去有风的地方特别欣赏这个剧中男女主的感情线两个陌生人,都是经历10年以上花花世界的人,哪有那么多的一见钟情,最多是开始的特别一点点。而且许红豆是个旅客,注定就是过客。即使在最开始的时候,因为外貌让谢之遥注意到了,但是他们不今日晚餐咋样?腌笃鲜超成功我绝对是贤妻良母型的,不爱逛街不爱购物,就喜欢在厨房研究吃的,以至于走亲戚的时候到谁家里都是我掌勺。今晚做了腌笃鲜,超级简单,把火腿和洗干净的咸肉还有排骨放锅里炖四十分钟,再放上竹今日份毒鸡汤张国荣说过,恋爱一定要从收到一束花还有一段正式的告白开始,该走的流程一样都不能少。恋爱要听正式的告白,大方的公开,而不是稀里糊涂的在一起,然后又莫名其妙的分开。爱情本就是一场勇敢者三思三思(一)我从过去所学到的教训就是不要让任何人使你变得无情。无论日子多么艰难,失去自我那是最大的代价。(二)始终考虑别人的感受,在你评判一个人之前,你需要理解他的感受思想,以及他将冬之野刘春柳为了追寻白鹭的影子翻开这片广阔的休耕地雨落下,细密,更细密鹭鸟的白一如昨日在时间的湖面轻掠微波一株异木棉开在空旷处这丁零作声的粉红节拍总有风为之回应一些细腻的词语找出了芦笋叶微信如果绑定银行卡,这2个设置记得关闭,不然钱少了也不知道微信作为风靡社交网络的聊天软件app,坐拥十二亿用户量,用户群体规模相当大。一直以来,微信都在与时俱进,给我们提供的服务是越来越多。从基础的好友聊天,发展到了群聊,再发展到了支付。前沿又一台屏下真全面屏8G2努比亚Z50Ultra来了目前中兴红魔已经先后发布了多款采用屏下前置摄像头真全面屏的手机,现在中兴家族的努比亚也要上屏下了。据中兴通讯终端事业部总裁努比亚技术有限公司总裁倪飞在微博预热,努比亚新机将采用屏下三星GalaxyS23Ultra原神实测,帧率不如小米12TProIT之家2月16日消息,三星GalaxyS23Ultra配备了高通为其定制的骁龙8Gen2forGalaxy芯片,理论上游戏表现应该更加出色。不过GoldenReviewer进行的微星PROMP161便携式显示器上市,售价1099元IT之家2月16日消息,微星此前在CES2023上展示了一款型号为PROMP161的便携式显示器,采用15。6英寸1080P屏,提供多种接口。今日,这款便携式显示器上架国内电商平台大容量企业级HDD的巅峰对决希捷银河18T和HC55018T我从来都不觉得性价比就等于低价,价格高但是规格也高的东西,同样具有性价比,就像我们今天的两位主角希捷银河X18的18T,和西数HC55018T。之所以说他们两个性价比高是因为,虽然