QTextDocument和QTextBlock

                                            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 <()确定一个块是否在同一文档中位于另一个块之前。

发布了6 篇原创文章 · 获赞 2 · 访问量 3597
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览