一、描述
此类用来储存结构化的富文本文档。
二、类型成员
1、enum QTextDocument::FindFlag:此枚举描述查找函数可用的选项。这些选项可以用“|”组合:
- FindBackward:向后搜索。
- FindCaseSensitive:不区分大小写。
- FindWholeWords:查找仅匹配完整的单词。
2、enum QTextDocument::MetaInformation:此枚举描述了可以添加到文档中的不同类型的元信息。
- DocumentTitle:文档的标题。
- DocumentUrl:文档的url。loadResource() 函数在加载相关资源时使用此url作为基础。
- CssMedia:此值用于在调用 setHtml() 时从指定的CSS样式表中选择相应的“@media”规则。
3、enum QTextDocument::ResourceType:此枚举描述可由 loadResource() 函数或QTextBrowser::setSource() 加载的资源类型。
- UnknownResource:未加载资源,或资源类型未知。
- HtmlResource:资源包含HTML。
- ImageResource:资源包含图像数据。
- StyleSheetResource:资源包含CSS。
- MarkdownResource:资源包含Markdown。
- UserResource:用户定义的资源类型的第一个可用值。
三、属性成员
1、baseUrl : QUrl
用于解析文档中相对资源URL的基URL。
资源URL被解析为与基URL的目标位于同一目录中,即着路径中最后一个“/”之后的任何部分都将被忽略。
2、blockCount : const int
文档中文本块的数量。
此属性的值在具有表格(QTextTable)或框架(QTextFrame)的文档中未定义。
默认情况下,如果已定义,则值为1。
3、defaultFont : QFont
用于显示文档文本的默认字体。
4、defaultStyleSheet : QString
默认样式表,应用于插入到文档中的所有新HTML格式文本(使用 setHtml() 或 QTextCursor::insertHtml() 插入)。
更改默认样式表不会对文档的现有内容产生任何影响。
5、defaultTextOption : QTextOption
文档中所有 QTextLayout 的默认文本选项。
创建 QTextBlocks 时,将在其 QTextLayout 上设置 defaultTextOption。
这可用来设置文档的全局属性,例如默认换行模式。
6、documentMargin : qreal
文档周围的边距。默认值为4。
7、indentWidth : qreal
文本列表(QTextList)和文本块(QTextBlock)缩进的宽度。默认为40。
8、layoutEnabled : bool
每次更改后 QTextDocument 是否应重新计算布局。默认为 true。
- 为 true,则对文档的任何更改都会触发布局。
- 为 false,则进行多次更改在最后只布局一次。
9、maximumBlockCount : int
文档文本块的最大数目。如果文档中所有的文本块超过此数目,则将从文档开头删除块。
负值或0表示无限制。默认值为0。此属性在具有表或框架的文档中未定义。
10、modified : bool
文档是否已被用户修改。默认为false。
11、pageSize : QSizeF
布置文档的页面大小。单位由基础绘制设备确定。在屏幕上绘制时,尺寸以逻辑像素为单位,在打印机上作画时以点数(1/72英寸)为单位。
12、size : const QSizeF
文档的实际大小,相当于 documentLayout()->documentSize()。可以通过设置文本宽度(textWidth)或设置页面大小(pageSize)来更改文档的大小。
13、textWidth : qreal
文档中文本的首选宽度。当文本的宽度大于此属性值时,如果文本可以拆分则将其拆分为多行。
若设置为-1,则只有当通过显式换行符或新段落强制换行时文本才会被拆分。默认值为-1。
14、undoRedoEnabled : bool
是否为此文档启用了撤消/回撤。默认为true。
如果禁用,将清除撤消堆栈,并且不会向其中添加任何项。
15、useDesignMetrics : bool
文档是否使用字体的 QFontMetrics 来提高文本布局的准确性。默认为 false。
设置为 false 则根据 QAbstractTextDocumentLayout::setPaintDevice() 上设置的绘制设备参数布局。
四、成员函数
1、【信号】void blockCountChanged(int newBlockCount)
文档中的文本块总数发生变化时发出此信号。
2、【信号】void contentsChange(int position, int charsRemoved, int charsAdded)
文档内容发生变化时发出此信号。例如插入或删除文本或应用格式时。
position 为发生更改的字符位置、charsRemoved 为删除的字符数、charsAdded 为添加的字符数。
3、【信号】void cursorPositionChanged(const QTextCursor &cursor)
光标的位置由于编辑操作而改变时发出此信号。更改的光标为 cursor。
4、【信号】void modificationChanged(bool changed)
文档内容以影响修改状态的方式更改时发出此信号。
5、void redo() / void undo()
回撤/撤消文档上的最后一次编辑操作。
void redo(QTextCursor *cursor) / void undo(QTextCursor *cursor)
如果可以回撤 / 撤消,则回撤 / 撤消文档上的最后一次编辑操作。cursor 位于回撤 / 撤消编辑操作的位置的末尾。
int availableRedoSteps() / int availableUndoSteps()
可用的回撤 / 撤销步骤数。
bool isRedoAvailable() / bool isUndoAvailable()
是否可以回撤 / 撤销。
6、【信号】void redoAvailable(bool available)
回撤操作的可用性变化时发出此信号。
7、【信号】void undoCommandAdded()
向文档添加可撤消内容时都会发出此信号。
8、void addResource(int type, const QUrl &name, const QVariant &resource)
使用 type 和 name 作为标识符,将资源 resource 添加到资源缓存中。type 是 ResourceType 中的值。
将图像添加为资源,从文档中引用它:
9、void adjustSize()
将文档调整为合理大小。
qreal idealWidth()
返回文本文档的理想宽度。理想宽度是文档的实际使用宽度,不考虑可选对齐方式。
10、QList<QTextFormat> allFormats()
返回文档中使用文本格式列表。
11、QTextBlock begin() / QTextBlock firstBlock()
文档的第一个文本块。
QTextBlock end()
返回的文本块无效,表示文档中最后一个块之后的块。
for (QTextBlock it = doc->begin(); it != doc->end(); it = it.next())
std::cout << it.text().toStdString() << "\n";
QTextBlock findBlock(int pos)
返回包含第 pos 个字符的文本块。
QTextBlock lastBlock()
返回文档最后一个有效的文本块。
QTextBlock findBlockByLineNumber(int lineNumber)
返回第 lineNumber 行的文本块。从0开始算。
QTextBlock findBlockByNumber(int blockNumber)
返回第 blockNumber 个文本块。
12、QChar characterAt(int pos)
返回位置pos处的字符,如果pos超出范围,则返回空字符。
13、int characterCount()
返回此文档的字符数。
14、void clear()
清除文档。
15、void clearUndoRedoStacks(QTextDocument::Stacks stacksToClear = UndoAndRedoStacks)
清除指定的堆栈。
16、QTextDocument * clone(QObject *parent = nullptr)
创建一个新的QTextDocument,它是此文本文档的副本。parent 是返回文本文档的父级。
17、void drawContents(QPainter *p, const QRectF &rect = QRectF())
使用画笔p绘制文档的内容,剪切为 rect 范围的内容。如果 rect 是一个空矩形,那么将不剪切。
18、QTextCursor find(const QString &subString, const QTextCursor &cursor, QTextDocument::FindFlags options = FindFlags())
查找文档中的子字符串subString。搜索从给定光标 cursor 的位置开始。
如果找到了subString,则返回具有所选匹配项的光标;否则返回空光标。
默认情况下,搜索不区分大小写,可以匹配文档中任何位置的文本。
QTextCursor find(const QString &subString, int position = 0, QTextDocument::FindFlags options = FindFlags())
搜索从给定位置 position 开始。如果 position 为 0,则搜索从文档开头开始。
QTextCursor find(const QRegularExpression &expr, int from = 0, QTextDocument::FindFlags options = FindFlags())
搜索从给定的 from 位置开始。
QTextCursor find(const QRegularExpression &expr, const QTextCursor &cursor, QTextDocument::FindFlags options = FindFlags())
搜索从给定光标 cursor 的位置开始。
19、int lineCount()
返回文档的行数。
20、QVariant loadResource(int type, const QUrl &name)
从具有给定名称的资源加载指定类型的数据。type 是 ResourceType 的值。
QVariant resource(int type, const QUrl &name)
返回指定类型的数据。如果在缓存中找不到资源,则调用 loadResource() 尝试加载资源。
21、int pageCount()
返回此文档中的页数。
22、void print(QPagedPaintDevice *printer)
打印文档。
23、int revision()
返回文档的修订版本值。当编辑文档时,修订版本的值会增加。
24、QTextFrame * rootFrame()
返回文档的根框架。
25、void setBaselineOffset(qreal baseline)
设置在文档布局中使用的字体高度的百分比的基线。默认值为0。正值将文本上移相应的百分比,负值则向下移动。
26、void setDefaultCursorMoveStyle(Qt::CursorMoveStyle style)
设置默认光标移动样式。
- Qt::LogicalMoveStyle:在从左到右的文本块内,按左箭头键时减少光标位置,按右箭头键时增加光标位置。如果文本块是从右到左的,则应用相反的行为。
- Qt::VisualMoveStyle:按下左箭头键将始终使光标向左移动,无论文本的书写方向如何。 按右箭头键将始终使光标向右移动。
27、void setHtml(const QString &html) / void setPlainText(const QString &text)
替换文档的全部内容。调用此函数时,将重置撤消/回撤历史记录。
QString toHtml()
返回包含文档的HTML表示形式的字符串。
文档内容指定其编码为UTF-8。如果要将返回的 html 字符串转换为字节数组以通过网络传输或保存到磁盘时,应使用 QString::toUtf8() 将字符串转换为 QByteArray。
QString toPlainText()
返回文档中包含的纯文本。与 toRawText() 相比,此函数将用 ASCII 字符替换某些 unicode 字符。
QString toRawText()
返回文档中包含的原始文本,不包含任何格式信息。
28、void setMarkdown(const QString &markdown, QTextDocument::MarkdownFeatures features = MarkdownDialectGitHub)
使用 Markdown 格式文本替换文档的全部内容。调用此函数时,将重置撤消/回撤历史记录。
可以通过 features 参数启用或禁用解析器的某些功能:
- Markdown NoHTML:Markdown文本中的任何HTML标记都将被丢弃
- MarkdownDialectCommonMark:解析器仅支持 CommonMark 标准化的功能
- MarkdownDialectGitHub:默认值,解析器支持GitHub特性
QString toMarkdown(QTextDocument::MarkdownFeatures features = MarkdownDialectGitHub)
返回含具有给定特性的文档的 Markdown 表示形式的字符串。
29、void setMetaInformation(QTextDocument::MetaInformation info, const QString &string)
设置文档元信息。
30、void setSubScriptBaseline(qreal baseline) / void setSuperScriptBaseline(qreal baseline)
设置下标 / 上标要在文档布局中使用的字体高度的百分比。
默认值:下标为16.67%(高度的1/6);上标为 50%(高度的1/2)。