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

学习C++、QT---27(QT中实现记事本项目实现行列显示、优化保存文件的功能的讲解)

每日一言

        人生没有白走的路,每一步都算数,每一滴汗水都值得。

现在我们来实现一下记事本的行列显示吧

就是这个功能,那么我们怎么实现呢,那么我们肯定要和我们的光标有关系的

这个是我们的槽函数

那么这个功能呢,也是根据我们的光标的变化而变化的,那么也是需要使用到这个testCursor这个函数的,因为需要对应的光标信息,那么我们就将光标的行和列打印出来,分别是columnNumber()列、和blockNumber()行,那么我们怎么找到这个函数的呢,我们去帮助文档的QTextCursor里面找到了这两个

分别是这两个我们在QTextCursor这个类中找到的方法

那么我们后面会发现我们最后要将文字写到我们的label里面的啊

我们将文字写到lable上的话是调用的这个方法

ui->labelcolrow->setText(lable);

那么这个方法的参数是QString啊,那么我们如果是之前的样子设置的话,是返回int类型的,所以我们要进行转换

QString lie  =QString::number(cursor.columnNumber());

QString hang =QString::number(cursor.blockNumber()+1);

要将int类型转换成QString类型,QString::number这个就是int转换成QString类型的方法了

随后我们肯定是要行和列都在一起啊,所幸我们就直接将字符串拼接起来

 QString lable = "L:"+lie+"  "+"H:"+hang+"  ";

那么这个lable就符合我们的Qstring类型了,所以再将这个lable传入到setTest参数里面

这样就可以实现了,只要我们的光标移动了,那么信号发送后,槽函数就会执行一遍,将最新的行列信息传到我们的lable

我们就这样实现了这个功能了

优化保存文件的功能

我们会发现我在保存的时候,我为什么会弹出一个文件选择框,那么实际上我在打开文件的时候,是不需要弹QTextDialog的啊,而是直接保存,只有在没有打开文件的时候才弹QTextDialog,让我去命名保存,好的那么我们来修改一下代码

这个就是我们修改后的代码

我们的逻辑是这样的,当文件没有打开的时候,那么我们就弹窗,然后反正打开和没有打开都需要进行读取文件信息,那么我们就将文件的读取放在if的外面,记住我们要将seek重置为0,因为如果是打开状态下,open的时候已经将文件读到最后了,所以光标在最尾巴,所以如果我们不加seek(0)重置光标的话,就会变成字符串拼接了,就会选择这个你想要保存的文本与上一次你打开之后的那个文本进行拼接,因为当时光标是在上一次打开的那个文件的最尾巴(通过open的时候读文件导致的),所以我们为了避免这个情况,我们需要将seek重置为0,这样,就会只显示我们当前的这个想要保存的文本了

http://www.lryc.cn/news/591497.html

相关文章:

  • Spring Boot 参数校验:@Valid 与 @Validated
  • 关于vector中的erase的强调
  • Leetcode刷题营第二十八题:二叉树的前序遍历
  • Effective Python 条款7 用列表推导来取代map和filter
  • c++之 KMP 讲解
  • 网络原理 —— HTTP
  • 深入理解Collections.addAll方法
  • Python 离线安装 PyInstaller 的完整步骤(以python3.11.4-amd64.exe为例)
  • Trae IDE:打造完美Java开发环境的实战指南
  • 产品经理如何绘制服务蓝图(Service Blueprint)
  • 基于5G系统的打孔LDPC编码和均匀量化NMS译码算法matlab性能仿真
  • Oracle 成本优化器(CBO)与数据库统计信息:核心原理与实践
  • 线程(三) linux 同步
  • .NET Framework版本信息获取(ASP.NET探针),获取系统的.NET Framework版本
  • pycharm提交项目到github及问题解决
  • ubuntu基础搭建
  • 【Android代码】绘本翻页时通过AI识别,自动通过手机/pad朗读绘本
  • 基于单片机公交车报站系统/报站器
  • 分支和循环语句
  • Kotlin集合与空值
  • 使用位运算优化 Vue.js 应用:高效状态管理技巧
  • 学习 Flutter (四):玩安卓项目实战 - 中
  • 【LeetCode 热题 100】230. 二叉搜索树中第 K 小的元素——中序遍历
  • Java全栈面试实录:从电商支付到AIGC的深度技术挑战
  • HTML常用标签汇总(精简版)
  • Easy ARM2132
  • 测试学习之——Pytest Day3
  • 【git】使用教程
  • HTTP 状态码笔记
  • element-plus——图标推荐