当前位置: 首页 > news >正文

Qt学习笔记第51到60讲

第51讲 记事本实现打开功能

回到第24个功能文件Notepad,给UI中的各个控件添加槽函数。

①开始按钮

void Widget::on_btnOpen_clicked()
{QString fileName=QFileDialog::getOpenFileName(this,tr("Open File"),"E:\\6_Qt Projects\\24_Notepad\\files",tr("Text(*.txt *.doc)"));//QFileDialog限制程序可打开的文件形式为txt文件或者doc文本ui->textEdit->clear();//每次打开文件时清除控件区域“textEdit”QFile file;file.setFileName(fileName);if(!file.open(QIODevice::ReadOnly|QIODevice::Text)){qDebug()<<"file open error";}QTextStream in(&file);in.setCodec("UTF-8");while(!in.atEnd()){QString context=in.readLine();//qDebug()<<qPrintable(context);ui->textEdit->append(context);//将读取到的每行内容通过 append 方法添加到界面的文本编辑框(ui->textEdit)中}file.close();
}

实现效果:

依次点击

输出结果为:

再试一下打开另外一个文件:

新内容正确显示,原本的文件内容也已经被删除。

第52讲 记事本实现保存新建文件的功能

本质山是为下面这个按键编写槽函数。

代码示例

void Widget::on_btnSave_clicked()
{QString fileName=QFileDialog::getSaveFileName(this,tr("Save File"),"E:\\6_Qt Projects\\24_Notepad\\files\\untitle.txt",tr("Text(*.txt *.doc)"));QFile file;file.setFileName(fileName);if(!(file.open(QIODevice::WriteOnly|QIODevice::Text))){qDebug()<<"failed to open file!"<<endl;}else{QTextStream out(&file);out.setCodec("UTF-8");QString context=ui->textEdit->toPlainText();out<<context;}file.close();
}

逐步讲解

1.获取保存文件名

 QString fileName=QFileDialog::getSaveFileName(this,tr("Save File"),"E:\\6_Qt Projects\\24_Notepad\\files\\untitle.txt",tr("Text(*.txt *.doc)"));

2.设置文件对象的文件名

    QFile file;file.setFileName(fileName);

3.打开文件并进行错误处理

if(!(file.open(QIODevice::WriteOnly|QIODevice::Text)))
{qDebug()<<"failed to open file!"<<endl;
}

4.写入文件

else{QTextStream out(&file);out.setCodec("UTF-8");QString context=ui->textEdit->toPlainText();out<<context;
}

5.关闭文件

第53讲 字符编码问题引入


http://www.mrgr.cn/news/79528.html

相关文章:

  • 39 vector深入理解 · 迭代器失效深度浅拷贝
  • 【人工智能基础06】人工神经网络基础(二):1. 权值初始化(权值优化、避免梯度爆炸、消失)、2. 权值衰减(防止过拟合)与 3. 权值共享(卷积核)
  • spring boot验证码
  • Kafka服务器的简单部署以及消息的生产、消费、监控
  • 【CKS最新模拟真题】获取多个集群的上下文名称并保存到指定文件中
  • Unity教程(十九)战斗系统 受击反馈
  • 避大坑!Vue3中reactive丢失响应式的问题
  • 链表OJ题型讲解与总结
  • 力扣每日一题 - 999. 可以被一步捕获的棋子数
  • 默认插槽,具名插槽(v-slot:具名,name=‘ ‘),作用域插槽
  • Ubuntu Linux 图形界面工具管理磁盘分区和文件系统(八)
  • 电子商务人工智能指南 1/6 - 搜索、广告和发现
  • 1-1 C语言链表
  • 报错:Invalid HTTP method: PATCH executing PATCH http://XXX.XXX
  • HarmonyOS(63) ArkUI 自定义占位组件NodeContainer
  • centos部署SkyWalking并在springcloud项目中用法举例
  • openharmony开发资料合集
  • 13.在 Vue 3 中使用OpenLayers加载鹰眼控件示例教程
  • 18.[极客大挑战 2019]BabySQL1
  • 书后习题答案:《Python程序设计基础(第2版)》,电子工业出版社,2020.01