QTextDocument Class

QTextDocument 类用于保存格式化文本。更多

头文件: #include <QTextDocument>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
继承: QObject

注意:该类中的所有函数都是可重入的

公共类型

enum FindFlag { FindBackward, FindCaseSensitively, FindWholeWords }
flags FindFlags
enum MarkdownFeature { MarkdownNoHTML, MarkdownDialectCommonMark, MarkdownDialectGitHub }
flags MarkdownFeatures
enum MetaInformation { DocumentTitle, DocumentUrl, CssMedia, FrontMatter }
(since 6.1) ResourceProvider
enum ResourceType { UnknownResource, HtmlResource, ImageResource, StyleSheetResource, MarkdownResource, UserResource }
enum Stacks { UndoStack, RedoStack, UndoAndRedoStacks }

属性

公共功能

QTextDocument(QObject *parent = nullptr)
QTextDocument(const QString &text, QObject *parent = nullptr)
virtual ~QTextDocument()
void addResource(int type, const QUrl &name, const QVariant &resource)
void adjustSize()
QList<QTextFormat> allFormats() const
int availableRedoSteps() const
int availableUndoSteps() const
QUrl baseUrl() const
(since 6.0) qreal baselineOffset() const
QTextBlock begin() const
int blockCount() const
QChar characterAt(int pos) const
int characterCount() const
virtual void clear()
void clearUndoRedoStacks(QTextDocument::Stacks stacksToClear = UndoAndRedoStacks)
QTextDocument *clone(QObject *parent = nullptr) const
Qt::CursorMoveStyle defaultCursorMoveStyle() const
QFont defaultFont() const
QString defaultStyleSheet() const
QTextOption defaultTextOption() const
QAbstractTextDocumentLayout *documentLayout() const
qreal documentMargin() const
void drawContents(QPainter *p, const QRectF &rect = QRectF())
QTextBlock end() const
QTextCursor find(const QRegularExpression &expr, const QTextCursor &cursor, QTextDocument::FindFlags options = FindFlags()) const
QTextCursor find(const QRegularExpression &expr, int from = 0, QTextDocument::FindFlags options = FindFlags()) const
QTextCursor find(const QString &subString, const QTextCursor &cursor, QTextDocument::FindFlags options = FindFlags()) const
QTextCursor find(const QString &subString, int position = 0, QTextDocument::FindFlags options = FindFlags()) const
QTextBlock findBlock(int pos) const
QTextBlock findBlockByLineNumber(int lineNumber) const
QTextBlock findBlockByNumber(int blockNumber) const
QTextBlock firstBlock() const
qreal idealWidth() const
qreal indentWidth() const
bool isEmpty() const
bool isLayoutEnabled() const
bool isModified() const
bool isRedoAvailable() const
bool isUndoAvailable() const
bool isUndoRedoEnabled() const
QTextBlock lastBlock() const
int lineCount() const
void markContentsDirty(int position, int length)
int maximumBlockCount() const
QString metaInformation(QTextDocument::MetaInformation info) const
QTextObject *object(int objectIndex) const
QTextObject *objectForFormat(const QTextFormat &f) const
int pageCount() const
QSizeF pageSize() const
void print(QPagedPaintDevice *printer) const
void redo(QTextCursor *cursor)
QVariant resource(int type, const QUrl &name) const
(since 6.1) QTextDocument::ResourceProvider resourceProvider() const
int revision() const
QTextFrame *rootFrame() const
void setBaseUrl(const QUrl &url)
(since 6.0) void setBaselineOffset(qreal baseline)
void setDefaultCursorMoveStyle(Qt::CursorMoveStyle style)
void setDefaultFont(const QFont &font)
void setDefaultStyleSheet(const QString &sheet)
void setDefaultTextOption(const QTextOption &option)
void setDocumentLayout(QAbstractTextDocumentLayout *layout)
void setDocumentMargin(qreal margin)
void setHtml(const QString &html)
void setIndentWidth(qreal width)
void setLayoutEnabled(bool b)
void setMarkdown(const QString &markdown, QTextDocument::MarkdownFeatures features = MarkdownDialectGitHub)
void setMaximumBlockCount(int maximum)
void setMetaInformation(QTextDocument::MetaInformation info, const QString &string)
void setPageSize(const QSizeF &size)
void setPlainText(const QString &text)
(since 6.1) void setResourceProvider(const QTextDocument::ResourceProvider &provider)
(since 6.0) void setSubScriptBaseline(qreal baseline)
(since 6.0) void setSuperScriptBaseline(qreal baseline)
void setTextWidth(qreal width)
void setUndoRedoEnabled(bool enable)
void setUseDesignMetrics(bool b)
QSizeF size() const
(since 6.0) qreal subScriptBaseline() const
(since 6.0) qreal superScriptBaseline() const
qreal textWidth() const
QString toHtml() const
QString toMarkdown(QTextDocument::MarkdownFeatures features = MarkdownDialectGitHub) const
QString toPlainText() const
QString toRawText() const
void undo(QTextCursor *cursor)
bool useDesignMetrics() const

公共插槽

void redo()
void setModified(bool m = true)
void undo()

信号

void baseUrlChanged(const QUrl &url)
void blockCountChanged(int newBlockCount)
void contentsChange(int position, int charsRemoved, int charsAdded)
void contentsChanged()
void cursorPositionChanged(const QTextCursor &cursor)
void documentLayoutChanged()
void modificationChanged(bool changed)
void redoAvailable(bool available)
void undoAvailable(bool available)
void undoCommandAdded()

静态公共成员

(since 6.1) QTextDocument::ResourceProvider defaultResourceProvider()
(since 6.1) void setDefaultResourceProvider(const QTextDocument::ResourceProvider &provider)

受保护函数

virtual QTextObject *createObject(const QTextFormat &format)
virtual QVariant loadResource(int type, const QUrl &name)

详细说明

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

每个文档元素都由一个相关的格式对象来描述。QTextDocuments 将每个格式对象视为唯一对象,并可将其传递给objectForFormat() 以获取应用该格式对象的文档元素。

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

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

通过toPlainText() 和toHtml() 方便函数,可以检索纯文本和 HTML 文档内容。使用find() 函数可以搜索文档文本。

使用setUndoRedoEnabled() 函数可以控制对文档进行的撤销/重做操作。编辑器部件可通过undo() 和redo() 插槽控制撤消/重做系统;文档还提供contentsChanged(),undoAvailable() 和redoAvailable() 信号,向连接的编辑器部件通报撤消/重做系统的状态。以下是 QTextDocument 的撤消/重做操作:

  • 插入或删除字符。同一文本块内的一系列插入或删除操作被视为一次撤销/重做操作。
  • 插入或移除文本块。单个操作中的一系列插入或删除(例如,通过选择然后删除文本)被视为单个撤消/重做操作。
  • 文本字符格式更改。
  • 文本块格式更改。
  • 文本块组格式更改。

另请参阅 QTextCursor,QTextEdit,和富文本处理

成员类型文档

枚举 QTextDocument::FindFlag
flags QTextDocument::FindFlags

该枚举描述了QTextDocument 查找函数的可用选项。这些选项可以从以下列表中进行 OR 编辑:

常量说明
QTextDocument::FindBackward0x00001向后搜索,而不是向前搜索。
QTextDocument::FindCaseSensitively0x00002默认情况下,查找操作不区分大小写。指定该选项后,查找操作将区分大小写。
QTextDocument::FindWholeWords0x00004使查找只匹配完整的单词。

FindFlags 类型是QFlags<FindFlag> 的类型定义。它存储 FindFlag 值的 OR 组合。

枚举 QTextDocument::MarkdownFeature
flags QTextDocument::MarkdownFeatures

该枚举用于在读取或写入 Markdown 时选择支持的功能集。

常量描述
QTextDocument::MarkdownNoHTML0x0020 | 0x0040Markdown 文本中的任何 HTML 标记将被丢弃
QTextDocument::MarkdownDialectCommonMark0CommonMark标准化的功能
QTextDocument::MarkdownDialectGitHub0x0004 | 0x0008 | 0x0400 | 0x0100 | 0x0200 | 0x0800 | 0x4000 | 0x100000GitHub 方言的大部分功能

具体来说,支持的 GitHub 方言子集包括 CommonMark 的所有功能,以及

  • 识别 URL、www 和电子邮件地址并将其转化为链接
  • 删除线
  • 下划线(有别于斜体;在 CommonMark 中是一样的)
  • 表格
  • 任务列表
  • front matter

"正面内容 "通常是 YAML 格式的元数据。Qt 目前不包含这方面的解析器;但您可以选择第三方解析器,调用QTextDocument::metaInformation() 获取整个块,并在 Qt 解析 Markdown 文件后调用自己的解析器。

注意: 目前toMarkdown() 的 Markdown 输出可能包含 GitHub 功能,即使您试图通过指定另一个枚举值来禁用它们。这可能会在未来的 Qt 版本中得到修复。

MarkdownFeatures 类型是QFlags<MarkdownFeature> 的类型定义。它存储 MarkdownFeature 值的 OR 组合。

另请参阅 toMarkdown() 和setMarkdown()。

enum QTextDocument::MetaInformation

该枚举描述了可添加到文档中的不同类型的元信息。

常量描述
QTextDocument::DocumentTitle0文档标题。
QTextDocument::DocumentUrl1文档的 URL。loadResource() 函数在加载相对资源时会将该网址作为基础。
QTextDocument::CssMedia2调用setHtml() 时,该值用于从指定的 CSS 样式表中选择相应的"@media "规则(如果有)。该枚举值在 Qt 6.3 中引入。
QTextDocument::FrontMatter3如果在解析源文件(目前仅从 Markdown 格式)时提取了头信息,则该值用于选择头信息。该枚举值已在 Qt 6.8 中引入。

另请参阅 metaInformation()、setMetaInformation() 和setHtml()。

[alias, since 6.1] QTextDocument::ResourceProvider

std::function<QVariant(constQUrl&)>的类型别名。

该类型定义在 Qt 6.1 中引入。

enum QTextDocument::ResourceType

该枚举描述了可由QTextDocumentloadResource() 函数或QTextBrowser::setSource() 加载的资源类型。

常量说明
QTextDocument::UnknownResource0未加载资源,或资源类型未知。
QTextDocument::HtmlResource1资源包含 HTML。
QTextDocument::ImageResource2资源包含图像数据。目前支持的数据类型有QMetaType::QPixmapQMetaType::QImage 。如果相应的变体类型为QMetaType::QByteArray ,则 Qt XML 会尝试使用QImage::loadFromData 加载图像。目前不支持QMetaType::QIcon 。图标需要先转换为支持的类型之一,例如使用QIcon::pixmap
QTextDocument::StyleSheetResource3资源包含 CSS。
QTextDocument::MarkdownResource4资源包含 Markdown。
QTextDocument::UserResource100用户定义资源类型的第一个可用值。

另请参阅 loadResource() 和QTextBrowser::sourceType()。

enum QTextDocument::Stacks

常数说明
QTextDocument::UndoStack0x01撤销堆栈。
QTextDocument::RedoStack0x02重做栈
QTextDocument::UndoAndRedoStacksUndoStack | RedoStack撤销和重做堆栈。

属性文档

baseUrl : QUrl

该属性包含用于解析文档中相对资源 URL 的基础 URL。

资源 URL 会解析为与基础 URL 目标目录相同的目录,这意味着路径中最后一个"/"之后的任何部分都会被忽略。

基础 URL相对 URL解析后的 URL
file:///path/to/content图像/logo.pngfile:///path/to/images/logo.png
file:///path/to/content/图片/logo.pngfile:///path/to/content/ images/logo.png
file:///path/to/content/index.html图片/logo.pngfile:///path/to/content/images/logo.png
file:///path/to/content/images/图片/logo.pngfile:///path/to/content/images/logo.png

访问功能:

QUrl baseUrl() const
void setBaseUrl(const QUrl &url)

通知信号:

void baseUrlChanged(const QUrl &url)

[read-only] blockCount : const int

该属性表示文档中文本块的数量。

在有表格或框架的文档中,该属性的值未定义。

默认情况下,如果已定义,此属性的值为 1。

访问函数:

int blockCount() const

另请参阅 lineCount() 和characterCount()。

defaultFont : QFont

该属性保存用于显示文档文本的默认字体

访问功能:

QFont defaultFont() const
void setDefaultFont(const QFont &font)

defaultStyleSheet : QString

默认样式表将应用于所有新插入文档的 HTML 格式文本,例如使用setHtml() 或QTextCursor::insertHtml() 插入的文本。

样式表必须符合 CSS 2.1 语法。

注意:更改默认样式表不会对文档的现有内容产生任何影响。

访问功能:

QString defaultStyleSheet() const
void setDefaultStyleSheet(const QString &sheet)

另请参阅 支持的 HTML 子集

defaultTextOption : QTextOption

该属性用于设置文档中所有QTextLayouts 的默认文本选项。

创建QTextBlock时,将在其QTextLayout 上设置 defaultTextOption。这样就可以设置文档的全局属性,如默认换行模式。

访问功能:

QTextOption defaultTextOption() const
void setDefaultTextOption(const QTextOption &option)

documentMargin : qreal

文件周围的边距。默认为 4。

访问功能:

qreal documentMargin() const
void setDocumentMargin(qreal margin)

indentWidth : qreal

返回用于文本列表和文本块缩进的宽度。

QTextListFormatQTextBlockFormat 的缩进属性指定了该值的倍数。默认缩进宽度为 40。

访问函数:

qreal indentWidth() const
void setIndentWidth(qreal width)

[since 6.4] layoutEnabled : bool

QTextDocument 是否应在每次更改后重新计算布局。

如果该属性设置为 true,则文档的任何更改都会触发布局,这将使一切按预期运行,但需要时间。

临时禁用布局可以在进行多项更改(不仅是文本内容,还包括默认字体、默认文本选项....)时节省时间,这样文档最后只需布局一次。例如,在还不知道文本宽度或页面大小时,这就很有用。

默认情况下,该属性为true

该属性在 Qt 6.4 中引入。

访问函数:

bool isLayoutEnabled() const
void setLayoutEnabled(bool b)

另请参阅 setTextWidth

maximumBlockCount : int

指定文档中块的限制。

指定文档中区块的最大数量。如果文档中的区块数量超过了此属性指定的数量,则会从文档开头删除区块。

负值或零值表示文档可以包含无限量的区块。

默认值为 0。

请注意,设置此属性后,限制将立即应用于文档内容。

设置此属性也会禁用撤消重做历史记录。

带表格或框架的文档未定义此属性。

访问功能:

int maximumBlockCount() const
void setMaximumBlockCount(int maximum)

modified : bool

该属性表示用户是否修改过文档

默认情况下,该属性为false

访问函数:

bool isModified() const
void setModified(bool m = true)

另请参阅 modificationChanged() 。

pageSize : QSizeF

该属性用于保存用于布局文档的页面大小。

单位由底层绘图设备决定。绘制到屏幕上时,尺寸以逻辑像素为单位;绘制到打印机上时,尺寸以点(1/72 英寸)为单位。

默认情况下,对于新创建的空文档,此属性包含一个未定义的尺寸。

访问函数:

QSizeF pageSize() const
void setPageSize(const QSizeF &size)

另请参阅 modificationChanged()。

[read-only] size : const QSizeF

该属性用于保存文档的实际大小。它等同于documentLayout()->documentSize() ;

文档大小可以通过设置文本宽度或设置整个页面大小来改变。

请注意,宽度总是 >=pageSize().width().

默认情况下,对于新创建的空文档,该属性包含一个取决于配置的大小。

访问函数:

QSizeF size() const

另请参阅 setTextWidth()、setPageSize() 和idealWidth()。

textWidth : qreal

文本宽度指定文档中文本的首选宽度。如果文本(或一般内容)的宽度大于指定的宽度,它将被分成多行并垂直增长。如果文本无法分成多行以适应指定的文本宽度,则会变大,size() 和idealWidth() 属性将反映这一点。

如果文本宽度设置为-1,那么文本将不会被分成多行,除非通过明确的换行或新段落来强制执行。

默认值为-1。

设置文本宽度也会将页面高度设置为-1,从而导致文档在垂直方向上连续增长或收缩。如果希望文档布局将文本分成多页,则必须设置pageSize 属性。

访问功能:

qreal textWidth() const
void setTextWidth(qreal width)

另请参阅 size(),idealWidth() 和pageSize()。

undoRedoEnabled : bool

此属性表示此文档是否已启用撤消/重做。

默认为 true。如果禁用,撤销堆栈将被清空,不会有任何项目添加到堆栈中。

访问功能:

bool isUndoRedoEnabled() const
void setUndoRedoEnabled(bool enable)

useDesignMetrics : bool

此属性表示文档是否使用字体设计度量来提高文本排版的准确性。

如果该属性设置为 true,布局将使用设计指标。否则,将使用在QAbstractTextDocumentLayout::setPaintDevice() 上设置的绘制设备度量。

使用设计度量后,布局的宽度将不再依赖于提示和像素包围。这意味着所见即所得的文本布局成为可能,因为基于 paintdevice 指标的宽度缩放比其他方式线性得多。

默认情况下,此属性为false

访问函数:

bool useDesignMetrics() const
void setUseDesignMetrics(bool b)

成员函数文档

[explicit] QTextDocument::QTextDocument(QObject *parent = nullptr)

用给定的parent 构建一个空的 QTextDocument。

[explicit] QTextDocument::QTextDocument(const QString &text, QObject *parent = nullptr)

构造一个 QTextDocument,其中包含指定的纯文本(未格式化)text ,并使用给定的parent

[virtual noexcept] QTextDocument::~QTextDocument()

销毁文件。

void QTextDocument::addResource(int type, const QUrl &name, const QVariant &resource)

使用typename 作为标识符,将资源resource 添加到资源缓存中。type 应是QTextDocument::ResourceType 中的一个值。

例如,可以将图片添加为资源,以便在文档中引用:

    document->addResource(QTextDocument::ImageResource,
        QUrl("mydata://image.png"), QVariant(image));

可以使用QTextCursor API 将图片插入文档:

    QTextImageFormat imageFormat;
    imageFormat.setName("mydata://image.png");
    cursor.insertImage(imageFormat);

或者,也可以使用 HTMLimg 标签插入图片:

    editor->append("<img src=\"mydata://image.png\" />");

void QTextDocument::adjustSize()

将文档调整到合理大小。

另请参阅 idealWidth(),textWidth, 和size

QList<QTextFormat> QTextDocument::allFormats() const

返回文档中使用的所有格式的文本格式列表。

int QTextDocument::availableRedoSteps() const

返回可用的重做步骤数。

另请参见 isRedoAvailable()。

int QTextDocument::availableUndoSteps() const

返回可用的撤销步骤数。

另请参阅 isUndoAvailable().

[since 6.0] qreal QTextDocument::baselineOffset() const

返回文档布局中使用的基线偏移量(单位:%)。

此函数在 Qt 6.0 中引入。

另请参阅 setBaselineOffset()、setSubScriptBaseline()、subScriptBaseline()、setSuperScriptBaseline() 和superScriptBaseline()。

QTextBlock QTextDocument::begin() const

返回文档的第一个文本块。

另请参见 firstBlock()。

[signal] void QTextDocument::blockCountChanged(int newBlockCount)

当文档中文本块的总数发生变化时,就会发出这个信号。newBlockCount 中传递的值是新的总数。

QChar QTextDocument::characterAt(int pos) const

返回位置pos 上的字符,如果位置超出范围,则返回空字符。

另请参见 characterCount()。

int QTextDocument::characterCount() const

返回此文档的字符数。

注: 由于QTextDocument 总是至少包含一个QChar::ParagraphSeparator ,因此本方法将至少返回 1。

另请参阅 blockCount() 和characterAt()。

[virtual] void QTextDocument::clear()

清除文件。

void QTextDocument::clearUndoRedoStacks(QTextDocument::Stacks stacksToClear = UndoAndRedoStacks)

清除stacksToClear 指定的堆栈。

该方法会清除撤销堆栈、重做堆栈或两者(默认)上的任何命令。如果命令被清除,则会发出相应的信号QTextDocument::undoAvailable() 或QTextDocument::redoAvailable() 。

另请参阅 QTextDocument::undoAvailable() 和QTextDocument::redoAvailable()。

QTextDocument *QTextDocument::clone(QObject *parent = nullptr) const

创建一个新的QTextDocument ,它是该文本文档的副本。parent 是返回文本文档的父文档。

[signal] void QTextDocument::contentsChange(int position, int charsRemoved, int charsAdded)

当文档内容发生变化时,例如插入或删除文本或应用格式化时,就会发出该信号。

所提供的信息包括文档中发生变化的字符position 、删除的字符数 (charsRemoved) 和添加的字符数 (charsAdded)。

该信号在文档的布局管理器收到更改通知之前发出。通过该钩子,可以为文档实现语法高亮。

另请参阅 QAbstractTextDocumentLayout::documentChanged() 和contentsChanged()。

[signal] void QTextDocument::contentsChanged()

当文档内容发生变化时,例如插入或删除文本或应用格式化时,就会发出该信号。

另请参阅 contentsChange().

[virtual protected] QTextObject *QTextDocument::createObject(const QTextFormat &format)

根据给定的format 创建并返回一个新的文档对象(一个QTextObject )。

QTextObjects 将始终通过此方法创建,因此如果在文档中使用自定义文本对象,则必须重新实现此方法。

[signal] void QTextDocument::cursorPositionChanged(const QTextCursor &cursor)

当编辑操作导致光标位置发生变化时,就会发出该信号。发生变化的光标在cursor 中传递。如果文档与QTextEdit 类一起使用,并且需要在使用箭头键移动光标时发出信号,则可以使用QTextEdit 中的cursorPositionChanged() 信号。

Qt::CursorMoveStyle QTextDocument::defaultCursorMoveStyle() const

从文档创建的所有QTextCursor 对象都使用默认的光标移动样式。默认值为Qt::LogicalMoveStyle

另请参阅 setDefaultCursorMoveStyle() 。

QFont QTextDocument::defaultFont() const

返回文档布局中使用的默认字体。

注: 属性 defaultFont 的获取函数。

另请参阅 setDefaultFont()。

[static, since 6.1] QTextDocument::ResourceProvider QTextDocument::defaultResourceProvider()

返回默认资源提供程序。

此函数在 Qt 6.1 中引入。

另请参阅 setDefaultResourceProvider()、resourceProvider() 和loadResource()。

QTextOption QTextDocument::defaultTextOption() const

默认文本选项用于文档中的所有QTextLayout 对象。这允许设置文档的全局属性,如默认换行模式。

注: 属性 defaultTextOption 的获取函数。

另请参阅 setDefaultTextOption()。

QAbstractTextDocumentLayout *QTextDocument::documentLayout() const

返回此文档的文档布局。

另请参阅 setDocumentLayout()。

[signal] void QTextDocument::documentLayoutChanged()

设置新文档布局时发出该信号。

另请参见 setDocumentLayout().

void QTextDocument::drawContents(QPainter *p, const QRectF &rect = QRectF())

使用绘制器p 绘制文档内容,并剪切到rect 。如果rect 是空矩形(默认值),则绘制文档时不剪切。

QTextBlock QTextDocument::end() const

此函数返回一个块,用于在遍历文档时测试文档是否结束。

for (QTextBlock it = doc->begin(); it != doc->end(); it = it.next())
    std::cout << it.text().toStdString() << "\n";

返回的块是无效的,代表文档中最后一个块之后的块。您可以使用lastBlock() 获取文档的最后一个有效块。

另请参见 lastBlock()。

QTextCursor QTextDocument::find(const QRegularExpression &expr, const QTextCursor &cursor, QTextDocument::FindFlags options = FindFlags()) const

查找文档同一段落中与给定正则表达式expr 相匹配的下一个词条。

搜索从给定cursor 的位置开始,在文档中向前搜索,除非在搜索选项中另有指定。options 控制搜索类型。

如果找到了匹配项,则会返回一个选中匹配项的光标;否则会返回一个空光标。

如果给定的cursor 有选择,则搜索从选择后开始;否则从光标位置开始。

默认情况下,搜索不区分大小写,可以匹配文档中任何位置的文本。

QTextCursor QTextDocument::find(const QRegularExpression &expr, int from = 0, QTextDocument::FindFlags options = FindFlags()) const

查找文档同一段落中与给定正则表达式expr 相匹配的下一个出现点。

搜索从给定的from 位置开始,在文档中向前搜索,除非在搜索选项中另有说明。options 控制搜索类型。

如果找到匹配项,则返回一个选定匹配项的光标;否则返回一个空光标。

如果from 位置为 0(默认值),则搜索从文档开头开始;否则从指定位置开始。

警告 由于历史原因,在expr 上设置的大小写敏感性选项将被忽略。相反,将使用options 来确定搜索是否区分大小写。

QTextCursor QTextDocument::find(const QString &subString, const QTextCursor &cursor, QTextDocument::FindFlags options = FindFlags()) const

查找文档中下一个出现的字符串subString 。搜索从给定cursor 的位置开始,在文档中向前搜索,除非在搜索选项中另有指定。options 控制搜索类型。

如果找到subString ,则返回一个选中匹配的光标;否则返回一个空光标。

如果给定的cursor 有选择,则搜索从选择后开始;否则从光标位置开始。

默认情况下,搜索不区分大小写,可以匹配文档中任何位置的文本。

QTextCursor QTextDocument::find(const QString &subString, int position = 0, QTextDocument::FindFlags options = FindFlags()) const

这是一个重载函数。

查找文档中下一个出现的字符串subString 。搜索从给定的position 开始,在文档中向前搜索,除非在搜索选项中另有说明。options 控制搜索类型。

如果找到subString ,则返回一个选定匹配的光标;否则返回一个空光标。

如果position 为 0(默认值),则搜索从文档开头开始;否则从指定位置开始。

QTextBlock QTextDocument::findBlock(int pos) const

返回包含pos-th 字符的文本块。

QTextBlock QTextDocument::findBlockByLineNumber(int lineNumber) const

返回包含指定lineNumber 的文本块。

另请参阅 QTextBlock::firstLineNumber()。

QTextBlock QTextDocument::findBlockByNumber(int blockNumber) const

返回带有指定blockNumber 的文本块。

另请参阅 QTextBlock::blockNumber() 。

QTextBlock QTextDocument::firstBlock() const

返回文档的第一个文本块。

qreal QTextDocument::idealWidth() const

返回文本文档的理想宽度。理想宽度是实际使用的文档宽度,未考虑可选对齐方式。它总是 <=size().width()。

另请参阅 adjustSize() 和textWidth

bool QTextDocument::isEmpty() const

如果文档为空,则返回true ;否则返回false

bool QTextDocument::isRedoAvailable() const

如果重做可用,则返回true ;否则返回false

另请参见 isUndoAvailable() 和availableRedoSteps()。

bool QTextDocument::isUndoAvailable() const

如果撤销可用,则返回true ;否则返回false

另请参见 isRedoAvailable() 和availableUndoSteps()。

QTextBlock QTextDocument::lastBlock() const

返回文档的最后一个(有效)文本块。

int QTextDocument::lineCount() const

返回该文档的行数(如果布局支持)。否则,它与块数相同。

另请参阅 blockCount() 和characterCount()。

[virtual protected invokable] QVariant QTextDocument::loadResource(int type, const QUrl &name)

通过给定的name 从资源中加载指定type 的数据。

富文本引擎调用此函数来请求未直接存储在QTextDocument 中但仍与之相关的数据。例如,图片是通过QTextImageFormat 对象的 name 属性间接引用的。

当被 Qt XML 调用时,typeQTextDocument::ResourceType 的值之一。

如果QTextDocument 是具有可调用 loadResource 方法(如QTextEditQTextBrowserQTextDocument 本身)的QObject 的子对象,那么默认实现会尝试从父对象中检索数据。

注: 可通过元对象系统和 QML 调用该函数。请参见Q_INVOKABLE

另请参阅 QTextDocument::ResourceProvider

void QTextDocument::markContentsDirty(int position, int length)

将给定的positionlength 所指定的内容标记为 "脏",通知文档需要重新排版。

QString QTextDocument::metaInformation(QTextDocument::MetaInformation info) const

返回由info 指定类型的文档的元信息。

另请参阅 setMetaInformation() 。

[signal] void QTextDocument::modificationChanged(bool changed)

每当文档内容发生影响修改状态的变化时,就会发出该信号。如果changed 为 true,则表示文档已被修改;否则为 false。

例如,在文档上调用setModified(false),然后插入文本,就会导致发出该信号。如果撤销该操作,使文档恢复到原始的未修改状态,则信号将再次发出。

QTextObject *QTextDocument::object(int objectIndex) const

返回与给定objectIndex 相关联的文本对象。

QTextObject *QTextDocument::objectForFormat(const QTextFormat &f) const

返回与格式f 相关联的文本对象。

int QTextDocument::pageCount() const

返回该文档的页数。

void QTextDocument::print(QPagedPaintDevice *printer) const

将文档打印到给定的printer 。在使用该功能之前,必须先设置QPagedPaintDevice

这只是一种将整个文档打印到打印机的方便方法。

如果文档已通过pageSize() 属性中指定的高度分页,则按原样打印。

如果文档没有分页,例如在QTextEdit 中使用的文档,则会创建文档的临时副本,并根据打印设备的 paperRect() 大小将副本分成多页。默认情况下,文档内容的边距为 2 厘米。此外,还会在每页底部打印当前页码。

另请参阅 QTextEdit::print()。

void QTextDocument::redo(QTextCursor *cursor)

如果redo is available ,则重做文档的最后一次编辑操作。

所提供的cursor 位于重做编辑操作的位置末尾。

[slot] void QTextDocument::redo()

这是一个重载函数。

如果redo is available ,重做文档上的最后一次编辑操作。

[signal] void QTextDocument::redoAvailable(bool available)

每当重做操作可用(available 为 true)或不可用(available 为 false)时,都会发出该信号。

QVariant QTextDocument::resource(int type, const QUrl &name) const

从给定name 的资源中返回指定type 的数据。

富文本引擎调用此函数来请求未直接存储在QTextDocument 中但仍与其相关联的数据。例如,图片是通过QTextImageFormat 对象的 name 属性间接引用的。

资源在文档内部缓存。如果缓存中找不到资源,就会调用loadResource 来尝试加载资源。然后,loadResource 应使用addResource 将资源添加到缓存中。

如果loadResource 没有加载资源,则会调用resourceProvider ,最后调用defaultResourceProvider (如果已设置)。请注意,提供程序的结果不会自动添加到缓存中。

另请参阅 QTextDocument::ResourceTyperesourceProvider()。

[since 6.1] QTextDocument::ResourceProvider QTextDocument::resourceProvider() const

返回此文本文档的资源提供者。

此函数在 Qt 6.1 中引入。

另请参阅 setResourceProvider()、defaultResourceProvider() 和loadResource()。

int QTextDocument::revision() const

返回文档的修订版本(如果启用了撤消)。

当编辑未修改的文档时,修订版本保证会增加。

另请参阅 QTextBlock::revision() 和isModified()。

QTextFrame *QTextDocument::rootFrame() const

返回文档的根框架。

[since 6.0] void QTextDocument::setBaselineOffset(qreal baseline)

将文档布局中使用的字体高度百分比基准线设置为baseline 。默认值为 0。正值将文本向上移动相应的百分比;负值将文本向下移动。

此函数在 Qt 6.0 中引入。

另请参阅 baselineOffset(),setSubScriptBaseline(),subScriptBaseline(),setSuperScriptBaseline() 和superScriptBaseline().

void QTextDocument::setDefaultCursorMoveStyle(Qt::CursorMoveStyle style)

将默认光标移动方式设置为给定的style

另请参阅 defaultCursorMoveStyle() 。

void QTextDocument::setDefaultFont(const QFont &font)

设置文档布局中使用的默认font

注: 属性defaultFont 的设置函数。

另请参阅 defaultFont().

[static, since 6.1] void QTextDocument::setDefaultResourceProvider(const QTextDocument::ResourceProvider &provider)

将默认资源提供程序设置为provider

所有未设置显式提供程序的 QTextDocuments 都将使用默认提供程序。

此函数在 Qt 6.1 中引入。

另请参阅 defaultResourceProvider()、setResourceProvider() 和loadResource()。

void QTextDocument::setDefaultTextOption(const QTextOption &option)

将默认文本选项设置为option

注: 属性defaultTextOption 的设置函数。

另请参阅 defaultTextOption().

void QTextDocument::setDocumentLayout(QAbstractTextDocumentLayout *layout)

设置文档使用给定的layout 。之前的布局将被删除。

另请参阅 documentLayoutChanged()。

void QTextDocument::setHtml(const QString &html)

html 字符串中给定的 HTML 格式文本替换整个文档内容。调用此函数时,将重置撤消/重做历史记录。

HTML 格式将尽可能得到尊重;例如,"<b>粗体</b>文本 "将生成第一个单词字体加粗的文本:"粗体文本"。

要选择默认 "screen "规则以外的 css 媒体规则,请使用setMetaInformation() 并将 "CssMedia"作为 "info "参数。

注意: 在创建包含 HTML 的QString 并将其传递给 setHtml() 时,调用者有责任确保文本被正确解码。

另请参阅 setPlainText()、支持的 HTML 子集setMetaInformation()。

void QTextDocument::setIndentWidth(qreal width)

设置用于文本列表和文本块缩进的width

QTextListFormatQTextBlockFormat 的缩进属性指定了该值的倍数。默认缩进宽度为 40。

注: 属性indentWidth 的设置函数。

另请参阅 indentWidth().

void QTextDocument::setMarkdown(const QString &markdown, QTextDocument::MarkdownFeatures features = MarkdownDialectGitHub)

markdown 字符串中给定的 Markdown 格式文本替换整个文档内容,支持给定的features 。默认情况下,所有支持的 GitHub 风格 Markdown 功能都包含在内;通过MarkdownDialectCommonMark 可获得更基本的解析。

Markdown 格式会尽可能得到尊重;例如,"*bold* text"(*粗体*文本)会产生第一个单词字体加重的文本。

markdown 字符串中包含 HTML 的解析处理方式与setHtml 相同;但不支持 HTML 块内的 Markdown 格式。

解析器的某些功能可以通过features 参数启用或禁用。默认值为MarkdownDialectGitHub

调用此函数时,将重置撤消/重做历史记录。

void QTextDocument::setMetaInformation(QTextDocument::MetaInformation info, const QString &string)

info 指定类型的文档元信息设置为给定的string

另请参阅 metaInformation() 。

void QTextDocument::setPlainText(const QString &text)

用给定的普通text 替换整个文档的内容。调用此函数时,将重置撤销/重做历史记录。

另请参见 setHtml()。

[since 6.1] void QTextDocument::setResourceProvider(const QTextDocument::ResourceProvider &provider)

将文本文档的资源提供者设置为provider

此函数在 Qt 6.1 中引入。

另请参阅 resourceProvider() 和loadResource()。

[since 6.0] void QTextDocument::setSubScriptBaseline(qreal baseline)

将文档布局中使用的默认下标基线作为字体高度的百分比设置为baseline 。默认值为 16.67%(高度的 1/6)。

此函数在 Qt 6.0 中引入。

另请参阅 subScriptBaseline(),setSuperScriptBaseline(),superScriptBaseline(),setBaselineOffset() 和baselineOffset() 。

[since 6.0] void QTextDocument::setSuperScriptBaseline(qreal baseline)

将文档布局中使用的默认上标基线(占字体高度的百分比)设置为baseline 。默认值为 50%(高度的 1/2)。

此函数在 Qt 6.0 中引入。

另请参阅 superScriptBaseline(),setSubScriptBaseline(),subScriptBaseline(),setBaselineOffset() 和baselineOffset().

[since 6.0] qreal QTextDocument::subScriptBaseline() const

返回上标基线占文档布局中字体高度的百分比。

此函数在 Qt 6.0 中引入。

另请参阅 setSubScriptBaseline()、setSuperScriptBaseline()、superScriptBaseline()、setBaselineOffset() 和baselineOffset()。

[since 6.0] qreal QTextDocument::superScriptBaseline() const

返回上标基线占文档布局中字体高度的百分比。

此函数在 Qt 6.0 中引入。

另请参阅 setSuperScriptBaseline()、setSubScriptBaseline()、subScriptBaseline()、setBaselineOffset() 和baselineOffset()。

QString QTextDocument::toHtml() const

返回包含文档 HTML 表示形式的字符串。

文档内容指定其编码为 UTF-8。如果以后要将返回的 html 字符串转换为字节数组,以便在网络上传输或保存到磁盘,则应使用QString::toUtf8() 将字符串转换为QByteArray

另请参阅 支持的 HTML 子集

QString QTextDocument::toMarkdown(QTextDocument::MarkdownFeatures features = MarkdownDialectGitHub) const

返回一个字符串,其中包含带有给定features 的文档的 Markdown 表示,如果由于任何原因写入失败,则返回空字符串。

另请参阅 setMarkdown

QString QTextDocument::toPlainText() const

返回文档中包含的纯文本。如果需要格式化信息,请使用QTextCursor

该函数的返回值与toRawText() 相同,但会用 ASCII 替代字符替换某些 unicode 字符。特别是,无分隔空格(U+00A0)将被常规空格(U+0020)替换,段落(U+2029)和行(U+2028)分隔符将被换行(U+000A)替换。如果需要精确的文档内容,请使用toRawText() 代替。

注: 嵌入对象(如图像)用 Unicode 值 U+FFFC(OBJECT REPLACEMENT CHARACTER)表示。

另请参阅 toHtml()。

QString QTextDocument::toRawText() const

返回文档中不包含任何格式信息的原始文本。如果需要格式化信息,请使用QTextCursor

另请参阅 toPlainText().

void QTextDocument::undo(QTextCursor *cursor)

如果可以撤销,则撤销文档上的最后一次编辑操作。所提供的cursor 位于撤销编辑操作的位置的末尾。

详情请查看Qt 撤消框架文档。

另请参阅 undoAvailable() 和isUndoRedoEnabled()。

[slot] void QTextDocument::undo()

这是一个重载函数。

[signal] void QTextDocument::undoAvailable(bool available)

每当撤销操作可用(available 为 true)或不可用(available 为 false)时,都会发出该信号。

详情请参见Qt 撤消框架文档。

另请参阅 undo() 和isUndoRedoEnabled()。

[signal] void QTextDocument::undoCommandAdded()

每次在QTextDocument 中添加新的撤销级别时,都会发出该信号。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.