Qt 富文本框架

引言

这个是中软杯赛题版式文档(OFD)排版原型系统 所要求的,使用Qt编写。经过我的调研,Qt在这方面做的确实很好,提供了一个比较完整的文字排版显示及编辑的框架。

支持的功能

Qt的框架支持文本、图片、表格等,并提供了接口,用户可自行继承实现。可以说是功能很丰富,很详实。

下面列出Qt 富文本框架的所有类型,及其对应的作用。

QAbstractTextDocumentLayout

Abstract base class used to implement custom layouts for QTextDocuments

QFont

Specifies a font used for drawing text

QSyntaxHighlighter

Allows you to define syntax highlighting rules, and in addition you can use the class to query a document's current formatting or user data

QTextCursor

Offers an API to access and modify QTextDocuments

QTextDocument

Holds formatted text

QTextDocumentFragment

Represents a piece of formatted text from a QTextDocument

QTextDocumentWriter

Format-independent interface for writing a QTextDocument to files or other devices

QTextBlockFormat

Formatting information for blocks of text in a QTextDocument

QTextCharFormat

Formatting information for characters in a QTextDocument

QTextFormat

Formatting information for a QTextDocument

QTextFrameFormat

Formatting information for frames in a QTextDocument

QTextImageFormat

Formatting information for images in a QTextDocument

QTextLength

Encapsulates the different types of length used in a QTextDocument

QTextListFormat

Formatting information for lists in a QTextDocument

QTextTableCellFormat

Formatting information for table cells in a QTextDocument

QTextTableFormat

Formatting information for tables in a QTextDocument

QTextInlineObject

Represents an inline object in a QAbstractTextDocumentLayout and its implementations

QTextLayout

Used to lay out and render text

QTextLine

Represents a line of text inside a QTextLayout

QTextList

Decorated list of items in a QTextDocument

QTextBlock

Container for text fragments in a QTextDocument

QTextBlockGroup

Container for text blocks within a QTextDocument

QTextBlockUserData

Used to associate custom data with blocks of text

QTextFragment

Holds a piece of text in a QTextDocument with a single QTextCharFormat

QTextFrame

Represents a frame in a QTextDocument

QTextObject

Base class for different kinds of objects that can group parts of a QTextDocument together

QTextFrame::iterator

Iterator for reading the contents of a QTextFrame

QTextBlock::iterator

QTextBlock::iterator class provides an iterator for reading the contents of a QTextBlock

QTextOption

Description of general rich text properties

QTextTable

Represents a table in a QTextDocument

QTextTableCell

Represents the properties of a cell in a QTextTable

QPlainTextDocumentLayout

Implements a plain text layout for QTextDocument

QPlainTextEdit

Widget that is used to edit and display plain text

QTextBrowser

Rich text browser with hypertext navigation

QTextEdit

Widget that is used to edit and display both plain and rich text

结构

文本文档由QTextDocument类表示,QTextDocument类包含有关文档的内部表示、结构以及跟踪修改以提供撤消/重做功能的信息。
文本文档的结构化表示将其内容呈现为文本块、框架、表格和其他对象的层次结构。这些层次结构提供了文档的逻辑结构,并描述了它们的内容将如何显示。 通常,框架和表格用于对其他结构进行分组,而文本块包含实际的文本信息。

文本编辑器组成

  • QTextEdit最顶层,既能编辑、也能显示。其中包含了QTextDocument。
  • QTextDocument 表示文档,其中包含了常见的元素组成,如段落,框架,表格和列表。 这些由QTextBlock,QTextFrame,QTextTable和QTextList类在QTextDocument中表示。
  • QTextFrame 表示框架,将文档分成一块一块的,其中可以包含其他元素。
  • QTextBlock 表示段落,包含于 QTextFrame中
  • QTextFragment 表示文字片段,同一个文字片段中具有相同的字体格式,包含于QTextBlock
  • QTextTable 表示表格,表格中的单元格cell组成行列,每个cell可以是其他的部分例如 frame、block
  • QTextList 表示列表,就向这部分的一样,可以是无序列表也可以是有序列表。
  • 图像 ,图向是特殊的文字,这里是当作文字处理的,QTextFragment使用QTextImageFormat就可以成为一个图像。
这个框架内容较多,我也正在进行了解,后续有新的学习知识会逐步进行更新。

参考链接

Qt Rich Text Framework
Demo

江超群

河海大学学生,参与过第五届中国软件杯大学生软件设计大赛,第三届全国高校云计算大赛等比赛,获得国家奖学金等多项荣誉。

Chang Zhou, China http://mcoder.cc

Subscribe to CG-HHU

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!