一、描述

此类用来储存结构化的富文本文档。

二、类型成员

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)。

QTextDocument相关推荐

  1. Qt富文本编辑器QTextDocument

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt富文本编辑器QTextDocument     本文地址:https://www.tech ...

  2. QTextEdit和QTextDocument(一)

    QTextEdit简介: 它可以显示rich text. 这里的rich text不是指microsoft的rich text,而是用html标签表示的形式. 它通过viewport显示大型文件,而且 ...

  3. QTextEdit和QTextDocument(ZZ)

    http://blog.csdn.net/rea_1121/article/details/6432064 QTextEdit简介: 它可以显示rich text. 这里的rich text不是指mi ...

  4. linux qt 生成word,Qt 生成word、pdf文檔

    需求:將軟件處理的結果保存為一個報告文檔,文檔中包含表格.圖片.文字,格式為word的.doc和.pdf.生成word是為了便於用戶編輯. 開發環境:qt4.8.4+vs2010 在qt的官網上對於p ...

  5. html接收model数据,QAbstractTableModel数据返回要显示的html代码

    您可以为将显示html的视图创建委托. class HtmlDelegate : public QItemDelegate { public: HtmlDelegate(QObject *parent ...

  6. python调用打印机_Python调用打印机参考例子

    参考资料: http://blog.csdn.net/jdh99/article/details/42585987 http://www.oschina.net/question/1438043_23 ...

  7. QTextEdit 总结

    关于Qt的富文本处理, 可以参考文档: Rich Text Processing 该文档有人翻译了一下(本来我想翻译- -!), 参考Rich Text Processing富文本处理 QTextEd ...

  8. 文本编辑器实现文本打印的功能

    文章目录 1 文本编辑器实现文本打印的功能 1 文本编辑器实现文本打印的功能 我们首先来看下QPlainTextEdit内部的文档结构: QPlainTextEdit通过QTextDocument对象 ...

  9. Qt中的QPrintDialog

    文章目录 1 Qt中的QPrintDialog 1 Qt中的QPrintDialog 打印对话框: Qt中提供了预定义的打印对话框QPrintDialog类. QPrintDialog类用于设置打印相 ...

最新文章

  1. php hasattribute,PHP DOMElement hasAttribute()用法及代码示例
  2. MongoDB是什么以及它如何满足您的应用需求
  3. 57-高级路由:分发列表:多协议分发列表实验:DV、LS
  4. python装饰器改变命运
  5. linux whois工具,CentOS如何安装whois命令
  6. java 中方法重载
  7. Excel分列功能的妙用
  8. 为ie和chrome FF单独设置样式的“条件注释法”、“类内属性前缀法”、“选择器前缀法”、实现方法 案例(推荐)
  9. TensorFlow2.0(十一)--理解LSTM网络
  10. Java NIO学习篇之通道FileChannel详解
  11. android studio 自动引用,Android Studio三方引用报错但是项目可以运行的解决方案
  12. 白日门手游luac文件加密怎么解密_浅析android手游lua脚本的加密与解密
  13. 国产操作系统Deepin安装
  14. #Android Studio# 模拟器开发者模式
  15. linux添加一块20G的scsi硬盘,Linux下添加第二块scsi硬盘.doc
  16. 方舟服务器设置文档,方舟云服务器设置
  17. python文本txt处理
  18. 来认识一下四大主流接口VGA、DVI、HDMI、DP基础知识详解
  19. 算法笔记:时间复杂度、空间复杂度 进制转化 秦九韶算法
  20. 正确理解Avalon MM总线的动态地址寻址Dynamic Addressing

热门文章

  1. CNN网络模型大总结【持续更新中...】
  2. MySQL使用教程(Navicat)
  3. 【深度学习框架】|PyTorch|完成一个手写体识别任务
  4. python之循环语句(for循环)
  5. 总结2018,规划2019
  6. matlab bsxfun memory,[转]matlab函数 bsxfunarrayfun
  7. hive 已知日期计算是周几
  8. 汽车中控屏显示com点android,老车遇上安卓大屏导航中控的坑
  9. oppo计算机快捷方式,OPPO怎么把快捷方式添加到桌面 OPPO把快捷方式添加到桌面方法...
  10. 使用Python+selenium实现自动化测试脚本实例