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

学习C++、QT---24(QT实现记事本项目的打开、保存、关闭)

每日一言

        别怕失败,那些打不倒你的,终将让你更强大。

实现记事本的打开

我们给这个打开的按键都给转到槽,那么我们去实现槽函数

void Widget::on_openButton_clicked()

{

    QString fileName = QFileDialog::getOpenFileName(thistr("file open"),

                                                    "E:/qianrushi/QT/QTcodeLesson",

                                                    tr("Text (*.txt *.doc)"));

    this->setWindowTitle(fileName+"---MyNoteBook");

    ui->textEdit->clear();

    file.setFileName(fileName);

    file.open(QIODevice::ReadOnly|QIODevice::Text);

    QTextStream in(&file);

    in.setCodec(ui->comboBox->currentText().toStdString().c_str());

    while(!in.atEnd()){

       QString context = in.readLine();

       ui->textEdit->append(context);//追加到文本的末尾

    }

}

很明显我们的槽函数就是写我们的文件选择框了因为点击这个打开按键后就是打开文件选择框,还有配合QFile和QTextStream进行读取文件并显示到textEdit上

实现记事本的保存

void Widget::on_saveButton_clicked()

{

    QString fileName = QFileDialog::getSaveFileName(thistr("file save"),

                               "E:/qianrushi/QT/QTcodeLesson/untitled.txt",

                               tr("Text(*.txt *.doc *.docx)"));

    this->setWindowTitle(fileName+"---MyNoteBook");

    file.setFileName(fileName);

    file.open(QIODevice::WriteOnly|QIODevice::Text);

    QTextStream out(&file);

    QString context =ui->textEdit->toPlainText();

    out <<context;

}

我们发现一个问题

就是之前我将保存按键的那个编码也写死了,但是后面我做完项目回来,发现如果我保存后,切换编码的时候会出现程序卡死的状况,所以写完程序后需要将写死的编码删掉

为什么使用这个toplainText

toPlainText()

返回纯文本,是最常用的获取文本内容的方法。

常用于文本的处理,就是将我们写的文本给全部捕获

然后我们用out<<context进行输出,写入到文件里面

实现记事本的关闭

void Widget::on_closeButton_clicked()

{

    this->setWindowTitle("MyNoteBook");

    if(file.isOpen()){

        ui->textEdit->clear();//清屏

        file.close();

    }

    ui->textEdit->clear();

}

很简单就是判断一下一个是如果文件是open的状态那么我们就先清屏,随后关闭文件,最后面还有一句这个clear是我为了我没有打开文件的时候,输入文本,当我点击这个关闭按钮的时候可以清屏

http://www.dtcms.com/a/279224.html

相关文章:

  • 内测分发平台应用的异地容灾和负载均衡处理和实现思路
  • gitignore添加后如何生效?
  • docker简介
  • Xftp 7.0.0109p 安装教程 - 详细步骤图解
  • SpringBoot相较于Spring有什么优势
  • VR样板间:房产营销新变革
  • 每天一个前端小知识 Day 31 - 前端国际化(i18n)与本地化(l10n)实战方案
  • 【前端】【Iconify图标库】【vben3】createIconifyIcon 实现图标组件的自动封装
  • 缺乏实际里程碑管控项目进度,如何设定关键节点
  • 院级医疗AI管理流程—基于数据共享、算法开发与工具链治理的系统化框架
  • Sharding-Sphere学习专题(三)数据加密、读写分离
  • 机器人形态的几点讨论
  • 基于OpenCV的深度学习人脸识别系统开发全攻略(DNN+FaceNet核心技术选型)
  • SpringBoot3整合“Spring Security+JWT”快速实现demo示例与Apifox测试
  • 在 Azure Linux 上安装 RustFS
  • 【Echarts】 电影票房汇总实时数据横向柱状图比图
  • Swift 解 LeetCode 326:两种方法判断是否是 3 的幂,含循环与数学技巧
  • ELK部署与使用详解
  • BGP基本配置
  • QGC 环境搭建踩坑记录
  • XML vs JSON:核心区别与最佳选择
  • IDEA实现纯java项目并打包jar(不使用Maven,Spring)
  • C++--priority_queue的模拟实现
  • 幻想读 通过多版本并发控制(MVCC)和间隙锁(Gap Lock)的组合也能防止幻读具体说下
  • Transformer江湖录 第五章:江湖争锋 - BERT vs GPT
  • 如何保护文件传输安全?文件传输加密
  • 企业数字化资产管理安全、成本、协作困局难解?
  • Java行为型模式(命令模式)应用场景分析
  • 数字化红头文件生成工具:提升群聊与团队管理效率的创新方案
  • Ubuntu安装 Redis