QTextDocument和QTextBlock

本文深入探讨了QTextDocument和QTextBlock在Qt框架中的作用与使用方法,详细解析了如何利用这两个类来处理富文本和文档结构,包括编辑、布局和撤消/重做功能。

                                            QTextDocument

QTextDocument是用于结构化富文本文档的容器,为样式文本和各种类型的文档元素(如列表,表格,框架和图像)提供支持。 可以创建它们以在QTextEdit中使用,也可以独立使用。

每个文档元素均由关联的格式对象描述。 QTextDocuments将每个格式对象视为一个唯一对象,并且可以将其传递给objectForFormat()以获得要应用到的文档元素。

可以使用QTextCursor以编程方式编辑QTextDocument,并且可以通过遍历文档结构来检查其内容。 整个文档结构作为文档元素的层次结构存储在根框架下,可通过rootFrame()函数找到。 另外,如果只想遍历文档的文本内容,则可以使用begin(),end()和findBlock()来检索可以检查和遍历的文本块。

文档的布局由documentLayout()确定; 如果您想使用自己的布局逻辑,则可以创建自己的QAbstractTextDocumentLayout子类并使用setDocumentLayout()对其进行设置。 可以通过调用metaInformation()函数来获取文档的标题和其他元信息。 对于通过QTextEdit类向用户公开的文档,也可以通过QTextEdit :: documentTitle()函数获得文档标题。

使用toPlainText()和toHtml()便捷功能,您可以以纯文本和HTML格式检索文档的内容。 可以使用find()函数搜索文档的文本。

可以使用setUndoRedoEnabled()函数控制对文档执行的撤消/重做。 编辑器小部件可以通过undo()和redo()插槽来控制撤消/重做系统; 该文档还提供contentChanged(),undoAvailable()和redoAvailable()信号,这些信号通知连接的编辑器小部件有关撤消/重做系统的状态。 以下是QTextDocument的撤消/重做操作:

插入或删除字符。 同一文本块内的一系列插入或删除被视为单个撤消/重做操作。

插入或删除文本块。 单个操作(例如,通过选择然后删除文本)中插入或删除的顺序被视为单个撤消/重做操作。

文字字符格式更改。

文本块格式更改。

文本块组格式更改。

                                               QTextBlock

QTextBlock类为QTextDocument中的文本片段提供了一个容器。

文本块将文本的块或段落封装在QTextDocument中。 QTextBlock提供对QTextDocuments的块/段落结构的只读访问。 如果要为QTextDocument的视觉表示实现自己的布局,或者要遍历文档并以自己的自定义格式写出内容,则主要使用它

文本块由其父文档创建。 如果需要创建新的文本块,或者在检查文档内容时修改文档的内容,请改用QTextCursor提供的基于光标的界面。

每个文本块位于document()中的特定position()处。 可以使用text()函数获得该块的内容。 length()函数确定文档中块的大小(包括格式字符)。 块的视觉属性由其文本layout(),其charFormat()和其blockFormat()确定。

next()和previous()函数可以在文档在迭代过程中不被其他方式修改的情况下,对文档中的连续有效块进行迭代。 注意,尽管块是按顺序返回的,但是相邻的块可能来自文档结构中的不同位置。 可以通过调用isValid()确定块的有效性。

QTextBlock提供了比较运算符,以使其更易于使用块:operator ==()比较两个块是否相等,operator!=()比较两个块是否不相等,operator <()确定一个块是否在同一文档中位于另一个块之前。

内容概要:本文系统梳理了多个科研领域的前沿研究与技术实现,重点涵盖FDTD方法中的完美匹配层(PML)研究,以及Matlab/Simulink在电磁、电力、控制、通信、信号处理、图像处理、路径规划、能源系统优化等领域的仿真与算法实现。文中列举了大量基于Matlab和Python的科研案例,如风电功率预测、负荷预测、无人机三维路径规划、电池系统故障诊断、雷达模拟、通信编码、微电网优化调度等,强调结合智能优化算法(如粒子群、遗传算法、深度学习等)提升系统性能。同时,提供了丰富的代码资源与仿真模型,涵盖永磁同步电机控制、逆变器设计、多智能体任务配、虚拟电厂调度等复杂系统,助力科研人员快速开展复现实验与创新研究。; 适合人群:具备一定编程基础,熟悉Matlab/Python工具,从事电气工程、自动化、通信、人工智能、新能源、控制科学等相关领域研究的研发人员及研究生。; 使用场景及目标:① 学习实现FDTD仿真中的PML边界条件以有效抑制数值反射;② 掌握Matlab/Simulink在多物理场建模、控制系统设计与优化算法中的综合应用;③ 借助提供的代码资源完成科研复现、课程设计、竞赛项目或工程原型开发; 阅读建议:此资源以科研实战为导向,不仅提供理论方法,更强调代码实现与仿真验证。建议读者结合自身研究方向,按目录顺序查阅相关模块,下载配套代码进行调试与二次开发,以达到学以致用、融会贯通的目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值