C++ Qt学习笔记(3)QT中的文本处理
1. 富文本和纯文本的概念:
纯文本: 例如一个txt文件打开,里面只有文本内容,除此之外什么都没有,非常单调,这既是纯文本。
富文本: 例如一个.doc的word文件,打开之后,不但有文字,还有图片,可能不同段落的文本还有不同的颜色,还有表格等内容,这就是富文本
富文本的功能比纯文本要更加强大,Qt中的QLineEdit只能处理纯文本,而QTextEdit支持富文本处理。
Qt中文档的基本框架:
Qt对富文本的处理分为编辑操作和只读操作两种方式,一个富文本文档的结构主要分为四种:
1. 框架(QtextFrame) QTextFrameFormat
2. 文本块 (QTextBlock) QTextBlockFormat
3. 表格(QtextTable) QTextTableFormat
4. 列表 (QTextList) QTextListFormat
每一种元素的格式使用相应的Format类来表示,这些格式在编辑文档时使用,需要搭配QTextCusor, QTextEdit类就是一个富文本编辑器,所以在构建QTextEdit类对象的时候就已经构建了一个QTextDocument类对象和一个QTextCursor类对象,只要调用他们进行相应的操作即可.
1. 文本块:
定义槽函数,用于读取文本块的内容
private slots: void on_textBlock_triggered();
在将textblock菜单连接到槽函数之后,定义槽函数如下:
void MainWindow::on_textBlock_triggered() { qDebug() << "Text block" << endl; QTextDocument* document = ui->textEdit->document(); // 文档框架QTextDocument类 // 获取文本块 QTextBlock block = document->firstBlock(); for(int i=0; i<document->blockCount(); i++) { qDebug() << tr("block:%1, block line number: %2, block length: %3, content:%4"). arg(i).arg(block.firstLineNumber()).arg(block.length()).arg(block.text()); // 更新block block = block.next(); } }
可以根据TextEdit中的内容,获取文本:
输出结果:
Qt中,tr()能够将普通字符串转化为QString类型,arg()函数能够将字符串中的参数传入字符串。
2. 表格,列表与图片
可以在QTextEdit中分别出入表格,列表,以及图片,
void MainWindow::on_textTable_triggered() { ui->textEdit->clear(); QTextCursor cursor = ui->textEdit->textCursor(); // 获取文本光标 QTextTableFormat format; format.setCellSpacing(2); format.setCellPadding(10); cursor.insertTable(2, 2, format); // 创建一个表格 row, column style } void MainWindow::on_textList_triggered() { ui->textEdit->clear(); QTextCursor cursor = ui->textEdit->textCursor(); // 获取文本光标 QTextListFormat format; format.setStyle(QTextListFormat::ListDecimal); cursor.insertList(format); } void MainWindow::on_textImage_triggered() { ui->textEdit->clear(); QTextCursor cursor = ui->textEdit->textCursor(); QTextImageFormat format; format.setName("../qt.jpg"); //指定图片路径 }
------------------------------------------------------------------------------------------------------
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)