QTextEdit类

The QTextEdit class provides a widget that is used to edit and display both plain and rich text. 更多...

头文件 #include <QTextEdit>
CMakefind_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmakeQT += widgets
继承 QAbstractScrollArea
继承自

QTextBrowser

公共类型

structExtraSelection
flagsAutoFormatting
enum自动格式化标志 { AutoNone, AutoBulletList, AutoAll }
enum行包裹模式 { 不包裹, 小部件宽度, 固定像素宽度, 固定列宽度 }

属性

公共函数

QTextEdit(QWidget *parent = nullptr)
QTextEdit(const QString &text, QWidget *parent = nullptr)
virtual~QTextEdit()
bool接受富文本() const
Qt::Alignment对齐() const
QString锚点在(const QPoint &pos) const
QTextEdit::AutoFormattingautoFormatting() const
boolcanPaste() const
QMenu *createStandardContextMenu()
QMenu *createStandardContextMenu(const QPoint & position)
QTextCharFormatcurrentCharFormat() const
QFontcurrentFont() const
QTextCursorcursorForPosition(const QPoint & pos) const
QRectcursorRect(const QTextCursor & cursor) const
QRectcursorRect() const
intcursorWidth() const
QTextDocument *document() const
QStringdocumentTitle() const
voidensureCursorVisible()
QListextraSelections() const
boolfind(const QString & exp, QTextDocument::FindFlags options = QTextDocument::FindFlags())
boolfind(const QRegularExpression & exp, QTextDocument::FindFlags options = QTextDocument::FindFlags())
QStringfontFamily() const
boolfontItalic() const
qrealfontPointSize() const
boolfontUnderline() const
intfontWeight() const
boolisReadOnly() const
boolisUndoRedoEnabled() const
intlineWrapColumnOrWidth() const
QTextEdit::LineWrapModelineWrapMode() const
virtual QVariantloadResource(int type, const QUrl & name)
voidmergeCurrentCharFormat(const QTextCharFormat & modifier)
voidmoveCursor(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor)
booloverwriteMode() const
QStringplaceholderText() const
voidprint(QPagedPaintDevice *printer) const
voidsetAcceptRichText(bool accept)
voidsetAutoFormatting(QTextEdit::AutoFormatting features)
voidsetCurrentCharFormat(const QTextCharFormat & format)
voidsetCursorWidth(int width)
voidsetDocument(QTextDocument *document)
voidsetDocumentTitle(const QString & title)
voidsetExtraSelections(const QList & selections)
voidsetLineWrapColumnOrWidth(int w)
voidsetLineWrapMode(QTextEdit::LineWrapMode mode)
voidsetOverwriteMode(bool overwrite)
voidsetPlaceholderText(const QString & placeholderText)
voidsetReadOnly(bool ro)
voidsetTabChangesFocus(bool b)
voidsetTabStopDistance(qreal distance)
voidsetTextCursor(const QTextCursor & cursor)
voidsetTextInteractionFlags(Qt::TextInteractionFlags flags)
voidsetUndoRedoEnabled(bool enable)
voidsetWordWrapMode(QTextOption::WrapMode policy)
booltabChangesFocus() const
qrealtabStopDistance() const
QColortextBackgroundColor() const
QColortextColor() const
QTextCursortextCursor() const
Qt::TextInteractionFlagstextInteractionFlags() const
QStringtoHtml() const
QStringtoMarkdown(QTextDocument::MarkdownFeatures features = QTextDocument::MarkdownDialectGitHub) const
QStringtoPlainText() const
QTextOption::WrapModewordWrapMode() const

重实现公共函数

virtual QVariantinputMethodQuery(Qt::InputMethodQuery property) const override

公共槽

voidappend(const QString &text)
voidclear()
voidcopy()
voidcut()
voidinsertHtml(const QString &text)
voidinsertPlainText(const QString &text)
voidpaste()
voidredo()
voidscrollToAnchor(const QString &:name)
voidselectAll()
voidsetAlignment(Qt::Alignment a)
voidsetCurrentFont(const QFont &f)
voidsetFontFamily(const QString &fontFamily)
voidsetFontItalic(bool italic)
voidsetFontPointSize(qreal s)
voidsetFontUnderline(bool underline)
voidsetFontWeight(int weight)
voidsetHtml(const QString &text)
voidsetMarkdown(const QString &markdown)
voidsetPlainText(const QString &text)
voidsetText(const QString &text)
voidsetTextBackgroundColor(const QColor &c)
voidsetTextColor(const QColor &c)
voidundo()
voidzoomIn(int range = 1)
voidzoomOut(int range = 1)

信号

voidcopyAvailable(bool yes)
voidcurrentCharFormatChanged(const QTextCharFormat &f)
voidcursorPositionChanged()
voidredoAvailable(bool available)
voidselectionChanged()
voidtextChanged()
voidundoAvailable(bool available)

保护函数

virtual boolcanInsertFromMimeData(const QMimeData *source) const
virtual QMimeData *createMimeDataFromSelection() const
virtual voidinsertFromMimeData(const QMimeData *source)

重实现保护函数

virtual voidchangeEvent(QEvent *e) override
virtual voidcontextMenuEvent(QContextMenuEvent *event) override
virtual voiddragEnterEvent(QDragEnterEvent *e) override
virtual voiddragLeaveEvent(QDragLeaveEvent *e) override
virtual voiddragMoveEvent(QDragMoveEvent *e) override
virtual voiddropEvent(QDropEvent *e) 覆盖
virtual voidfocusInEvent(QFocusEvent *e) 覆盖
virtual boolfocusNextPrevChild(bool next) 覆盖
virtual voidfocusOutEvent(QFocusEvent *e) 覆盖
virtual voidinputMethodEvent(QInputMethodEvent *e) 覆盖
virtual voidkeyPressEvent(QKeyEvent *e) 覆盖
virtual voidkeyReleaseEvent(QKeyEvent *e) 覆盖
virtual voidmouseDoubleClickEvent(QMouseEvent *e) 覆盖
virtual voidmouseMoveEvent(QMouseEvent *e) 覆盖
virtual voidmousePressEvent(QMouseEvent *e) 覆盖
virtual voidmouseReleaseEvent(QMouseEvent *e) 覆盖
virtual voidpaintEvent(QPaintEvent *event) 覆盖
virtual voidresizeEvent(QResizeEvent *e) 覆盖
virtual voidscrollContentsBy(int dx, int dy) 覆盖
virtual voidshowEvent(QShowEvent *) 覆盖
virtual voidwheelEvent(QWheelEvent *e) 覆盖

详细描述

简介和概念

QTextEdit 是一个高级 WYSIWYG 查看器/编辑器,支持使用 HTML 样式的标签或 Markdown 格式进行富文本格式化。它针对处理大量文档和响应用户输入迅速进行了优化。

QTextEdit 工作在段落和字符上。段落是一个经过格式化的字符串,它被换行以适应小部件的宽度。默认情况下,当我们读取纯文本时,一个换行符表示一个段落。一个文档由零个或多个段落组成。段落中的单词按照段落的对齐方式对齐。段落之间由硬回车分隔。段落中的每个字符都有自己的属性,例如字体和颜色。

QTextEdit 可以显示图片、列表和表格。如果文本太大,无法在文本编辑的视口内查看,将出现滚动条。文本编辑可以加载纯文本和富文本文件。富文本可以使用 HTML 4 标记语言的一个子集来描述;有关更多信息,请参阅支持的 HTML 子集页面。

如果只需要显示一小块富文本,请使用 QLabel

Qt 中的富文本支持旨在提供一种快速、可移植且高效的方式来向应用程序添加合理的在线帮助功能,并为富文本编辑器提供基础。如果您发现 HTML 支持不能满足您的需求,您可以考虑使用 Qt WebKit,它提供了一个功能齐全的网络浏览器小部件。

QTextEdit 上鼠标光标的默认形状是 Qt::IBeamCursor。可以通过 viewport() 的光标属性来更改它。

使用 QTextEdit 作为显示小部件

QTextEdit 可以显示包括表格和图像在内的大 HTML 子集。

可以使用 setHtml() 来设置或替换文本,该函数删除现有文本并以 setHtml() 调入的文本替换它。如果您以遗留 HTML 调用 setHtml(),然后调用 toHtml(),则返回的文本可能会有不同的标记,但将表示相同的文本。可以使用 clear() 删除整个文本。

文本也可以使用setMarkdown() 设置或替换, 同样的注意事项同样适用:如果随后调用toMarkdown(), 返回的文本可能不同,但尽可能保留原文意义。带有嵌入HTML的Markdown可以被解析, 同setHtml() 有相同的限制; 但toMarkdown() 仅写入“纯”Markdown,不包含任何嵌入的HTML。

可以使用QTextCursor 类或将insertHtml()、insertPlainText()、append() 或 paste() 等便利函数插入文本。 QTextCursor 还能够将复杂数据如表格或列表插入到文档中,并处理创建选择项以及应用于选定文本的改变。

默认情况下,文本编辑将在空格处换行以适应文本编辑小部件。使用 setLineWrapMode() 函数来指定所需的换行类型, 如果不需要换行则使用 NoWrap。调用 setLineWrapMode() 设置固定像素宽度 FixedPixelWidth, 或者使用 FixedColumnWidth 设置列宽,像素或列数由 setLineWrapColumnOrWidth() 指定。如果使用小部件宽度的换行 WidgetWidth, 可以使用 setWordWrapMode() 指定是否在空白处或在任何地方断行。

可以使用 find() 函数在文本内查找并选择指定的字符串。

如果您想限制 QTextEdit 中的段落数目,比如在日志查看器中通常很有用,那么可以使用 QTextDocument 的最大块数属性来实现。

只读按键绑定

当 QTextEdit 以只读方式使用时,按键绑定仅限于导航,并且文本只能通过鼠标选定。

按键操作动作
上键向上移动一行。
下键向下移动一行。
左键向左移动一个字符。
右键向右移动一个字符。
PageUp向上移动一个(视口)页面。
PageDown向下移动一个(视口)页面。
Home移动到文本的开始位置。
End移动到文本的结束位置。
Alt+Wheel水平滚动页面(鼠标滚轮 refers to the mouse wheel)。
Ctrl+Wheel缩放文本。
Ctrl+A选择所有文本。

文本编辑可能能够提供一些元信息。例如,documentTitle() 函数会返回位于 HTML <title> 标签内的文本。

注意: 在 HTML 文档中使用缩放仅当字体大小不是固定值时才有效。

将 QTextEdit 用作编辑器

关于使用 QTextEdit 作为显示小部件的所有信息也都适用于此。

使用 setFontItalic()、setFontWeight()、setFontUnderline()、setFontFamily()、setFontPointSize()、setTextColor() 和 setCurrentFont() 设置当前字符格式的属性。使用 setAlignment() 设置当前段落的对齐方式。

文本选择由QTextCursor类处理,该类提供创建选择、检索文本内容或删除选择的功能。您可以使用()方法检索与用户可见光标对应的对象。如果您想在QTextEdit中设置一个选择,只需在QTextCursor对象上创建一个,然后使用()将其设置为可见光标。可以使用()将选择复制到剪贴板,或者使用()将其剪切到剪贴板。可以使用()选择整个文本。

当光标移动并且基础格式属性更改时,会发出currentCharFormatChanged()信号,以便在新光标位置反映新的属性。

当文本发生更改时(无论是通过()还是通过编辑器本身),会发出textChanged()信号。

QTextEdit持有一个QTextDocument对象,可以使用()方法检索它。您也可以使用()设置自己的文档对象。

QTextDocument提供了一个isModified()函数,如果没有以false作为参数调用setModified,或者自加载以来文本已被修改,该函数将返回true。此外,它还提供了撤销和重做的功能。

拖放

QTextEdit还支持自定义拖放行为。默认情况下,QTextEdit会在用户在文档上放下这些MIME类型的Data时插入纯文本、HTML和富文本。重新实现()和()以支持更多MIME类型。

例如,要允许用户将图片拖放到QTextEdit中,您可以在以下方式中实现这些函数

bool TextEdit::canInsertFromMimeData( const QMimeData *source ) const
{
    if (source->hasImage())
        return true;
    else
        return QTextEdit::canInsertFromMimeData(source);
}

通过返回true添加对image MIME类型支持。对于所有其他MIME类型,我们使用默认实现。

void TextEdit::insertFromMimeData( const QMimeData *source )
{
    if (source->hasImage())
    {
        QImage image = qvariant_cast<QImage>(source->imageData());
        QTextCursor cursor = this->textCursor();
        QTextDocument *document = this->document();
        document->addResource(QTextDocument::ImageResource, QUrl("image"), image);
        cursor.insertImage("image");
    }
}

我们解包MIME源持有的QVariant中的图片,并将其作为资源插入到文档中。

编辑快捷键

实施编辑的快捷键列表

按键操作动作
退格键删除光标左侧的字符。
删除键删除光标右侧的字符。
Ctrl+C将选定的文本复制到剪贴板。
Ctrl+Insert将选定的文本复制到剪贴板。
Ctrl+K删除到行尾。
Ctrl+V将剪贴板文本粘贴到文字编辑器。
Shift+Insert将剪贴板文本粘贴到文字编辑器。
Ctrl+X删除选定的文本并将其复制到剪贴板。
Shift+Delete删除选定的文本并将其复制到剪贴板。
Ctrl+Z撤销上一个操作。
Ctrl+Y重做上一个操作。
左键将光标向左移动一个字符。
Ctrl+Left将光标向左移动一个单词。
右键将光标向右移动一个字符。
Ctrl+Right将光标向右移动一个单词。
上键将光标向上移动一行。
下键将光标向下移动一行。
PageUp将光标向上移动一页。
PageDown将光标向下移动一页。
Home将光标移动到行首。
Ctrl+Home将光标移动到文本开头。
End将光标移动到行尾。
Ctrl+End将光标移动到文本结尾。
Alt+Wheel水平滚动页面(鼠标滚轮 refers to the mouse wheel)。

要选择(标记)文本,在按下一个移动按键的同时按下 Shift 键,例如,Shift+向右会选择右侧的字符,而Shift+Ctrl+向右则会选择右侧的单词,等等。

另请参阅 QTextDocumentQTextCursor语法高亮示例富文本处理

成员类型文档

enum QTextEdit::AutoFormattingFlag
flags QTextEdit::AutoFormatting

常数描述
QTextEdit::AutoNone0不执行任何自动格式化。
QTextEdit::AutoBulletList0x00000001自动创建项目符号列表(例如,当用户在最左侧列中输入星号('*')或在现有列表项中按 Enter 键时)。
QTextEdit::AutoAll0xffffffff应用所有自动格式化。目前仅支持自动创建项目符号列表。

AutoFormatting 类型是 QFlags<AutoFormattingFlag> 的 typedef。它存储 AutoFormattingFlag 值的 OR 组合。

enum QTextEdit::LineWrapMode

常数
QTextEdit::NoWrap0
QTextEdit::WidgetWidth1
QTextEdit::FixedPixelWidth2
QTextEdit::FixedColumnWidth3

属性文档

acceptRichText : bool

此属性表示文本编辑是否接受用户插入的富文本。

当此属性设置为 false 时,文本编辑将只接受用户从剪贴板或拖放等方式输入的纯文本。例如。

此属性默认为 true。

访问函数

boolacceptRichText() const
voidsetAcceptRichText(bool accept)

autoFormatting : AutoFormatting

此属性表示启用的自动格式化功能集。

值可以是 AutoFormattingFlag 枚举中值的任何组合。默认为 AutoNone。选择 AutoAll 以启用所有自动格式化。

目前,提供的唯一自动格式化功能是 AutoBulletList;Qt 的未来版本可能提供更多。

访问函数

QTextEdit::AutoFormattingautoFormatting() const
voidsetAutoFormatting(QTextEdit::AutoFormatting features)

cursorWidth : int

此属性指定光标宽度的像素值。默认值为 1。

访问函数

intcursorWidth() const
voidsetCursorWidth(int width)

document : QTextDocument*

此属性持有文本编辑器的基础文档。

注意: 除非它是文档的父对象,否则编辑器 不会获取文档的所有权。提供的文档的父对象仍为该对象的拥有者。如果之前指定的文档是编辑器的子对象,则它将被删除。

访问函数

QTextDocument *document() const
voidsetDocument(QTextDocument *document)

documentTitle : QString

此属性保存从文本解析出的文档标题。

默认情况下,对于新建的空文档,此属性包含一个空字符串。

访问函数

QStringdocumentTitle() const
voidsetDocumentTitle(const QString &title)

html : QString

此属性提供了对文本编辑器文本的HTML接口。

toHtml() 返回文本编辑器的HTML形式文本。

setHtml() 更改文本编辑器的文本。任何先前的文本都将被移除,撤销/重做历史记录将被清除。输入文本将被解释为HTML格式的丰富文本。除非 textCursor() 已经位于文档的开始,否则也将重置 currentCharFormat()。

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

默认情况下,对于新建的空文档,此属性包含一个描述HTML 4.0文档的文本,但没有正文。

访问函数

QStringtoHtml() const
voidsetHtml(const QString &text)

通知信号

voidtextChanged()

另请参阅支持的HTML子集plainText

lineWrapColumnOrWidth : int

此属性保留文本将被折行(换行)的位置(取决于 wrap 模式,可能是像素或列)

如果 wrap 模式是 FixedPixelWidth,该值是文本编辑器的左侧边缘从左边缘起的像素数,在哪个位置文本应该被折行。如果 wrap 模式是 FixedColumnWidth,该值是从文本编辑器的左侧边缘起的字符列数。

默认情况下,此属性包含一个值为0。

访问函数

intlineWrapColumnOrWidth() const
voidsetLineWrapColumnOrWidth(int w)

另请参阅lineWrapMode

lineWrapMode : LineWrapMode

此属性保留行折行的模式

默认模式是 WidgetWidth,它使单词在文本编辑器的右边缘处折行。在空白处折行,保持整个单词完整。如果你想要在单词内折行,请使用 setWordWrapMode。如果你设置了 FixedPixelWidthFixedColumnWidth 的折行模式,你也应该调用 setLineWrapColumnOrWidth() 并指定你想要的宽度。

访问函数

QTextEdit::LineWrapModelineWrapMode() const
voidsetLineWrapMode(QTextEdit::LineWrapMode mode)

另请参阅lineWrapColumnOrWidth

markdown : QString

此属性提供了对文本编辑器文本的Markdown接口。

toMarkdown() 返回文本编辑的文本为“纯”Markdown格式,不包含任何嵌入的HTML格式。一些 QTextDocument 支持的功能(如使用特定颜色和命名字体)无法在“纯”Markdown中表达,并将被省略。

setMarkdown() 改变文本编辑的文本。之前的文本将被移除,撤销/重做历史将被清除。输入文本被解释为Markdown格式的富文本。

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

通过features参数可以启用或禁用解析器的某些功能

常数描述
MarkdownNoHTMLMarkdown文本中的任何HTML标签都将被丢弃
MarkdownDialectCommonMark解析器只支持CommonMark标准化的功能
MarkdownDialectGitHub解析器支持GitHub方言

默认值为MarkdownDialectGitHub

访问函数

QStringtoMarkdown(QTextDocument::MarkdownFeatures features = QTextDocument::MarkdownDialectGitHub) const
voidsetMarkdown(const QString &markdown)

通知信号

voidtextChanged()

另请参阅plainTexthtmlQTextDocument::toMarkdown() 和 QTextDocument::setMarkdown()。

overwriteMode : bool

此属性表示用户输入的文本是否将覆盖现有文本

与许多文本编辑器一样,文本编辑小部件可以配置为用用户输入的新文本插入或覆盖现有文本。

如果此属性为true,现有文本将被新文本逐字符覆盖;否则,文本将插入到光标位置,并移动现有文本。

默认情况下,此属性为false(新文本不会覆盖现有文本)。

访问函数

booloverwriteMode() const
voidsetOverwriteMode(bool overwrite)

placeholderText : QString

此属性保存编辑器的占位文本

设置此属性将使编辑器在document()为空时显示灰色的占位文本。

默认情况下,此属性包含空字符串。

访问函数

QStringplaceholderText() const
voidsetPlaceholderText(const QString &placeholderText)

另请参阅document

plainText : QString

此属性包含文本编辑器的内容,以纯文本形式。

当设置此属性时,先前的内容将被删除,撤销/重做历史将被重置。除非textCursor()已经在文档的开始处,否则也将重置currentCharFormat()。

如果文本编辑有其他内容类型,在调用toPlainText()时,不会将其内容替换为纯文本。唯一例外是,非换行空格nbsp;将被转换为标准空格。

默认情况下,对于没有内容的编辑器,此属性包含空字符串。

访问函数

QStringtoPlainText() const
voidsetPlainText(const QString &text)

另请参阅 html.

readOnly : bool

此属性表示文本编辑器是否为只读。

在只读文本编辑器中,用户只能浏览文本并选择文本;无法修改文本。

此属性的默认值为 false。

访问函数

boolisReadOnly() const
voidsetReadOnly(bool ro)

tabChangesFocus : bool

此属性表示是否 Tab 键改变了焦点或被接受为输入。

在某些情况下,文本编辑器不应允许用户通过 Tab 键输入制表符或改变缩进,因为这会破坏焦点链。默认值为 false。

访问函数

booltabChangesFocus() const
voidsetTabChangesFocus(bool b)

tabStopDistance : qreal

此属性表示以像素为单位的制表符停靠距离。

默认情况下,此属性包含 80 像素值。

不要设置小于 horizontalAdvance() 的值 QChar::VisualTabCharacter 字符,否则制表符将不完全绘制。

访问函数

qrealtabStopDistance() const
voidsetTabStopDistance(qreal distance)

另请参阅 QTextOption::ShowTabsAndSpacesQTextDocument::defaultTextOption.

textInteractionFlags : Qt::TextInteractionFlags

指定小部件如何与用户输入交互。

默认值取决于 QTextEdit 是只读还是可编辑,以及它是不是 QTextBrowser

访问函数

Qt::TextInteractionFlagstextInteractionFlags() const
voidsetTextInteractionFlags(Qt::TextInteractionFlags flags)

undoRedoEnabled : bool

此属性表示是否启用撤消和重做。

如果此属性为 true,并且存在可以撤消(或重做)的操作,则用户才能撤销或重做操作。

访问函数

boolisUndoRedoEnabled() const
voidsetUndoRedoEnabled(bool enable)

wordWrapMode : QTextOption::WrapMode

此属性表示 QTextEdit 在通过单词换行时将使用哪种模式。

默认情况下,此属性设置为 QTextOption::WrapAtWordBoundaryOrAnywhere

访问函数

QTextOption::WrapModewordWrapMode() const
voidsetWordWrapMode(QTextOption::WrapMode policy)

另请参阅 QTextOption::WrapMode.

成员函数文档

[显式] QTextEdit::QTextEdit(QWidget *parent = nullptr)

使用父元素 parent 构造一个空的 QTextEdit。

[显式] QTextEdit::QTextEdit(const QString &text, QWidget *parent = nullptr)

构造具有父对象 parent 的 QTextEdit。该文本编辑将显示文本 text。文本将被解释为 HTML。

[虚函数 noexcept] QTextEdit::~QTextEdit()

析构函数。

Qt::Alignment QTextEdit::alignment() const

返回当前段落的对齐方式。

另请参阅setAlignment().

QString QTextEdit::anchorAt(const QPoint &pos) const

返回位置 pos 处的锚点引用,如果没有在该点存在锚点,则返回空字符串。

[槽函数] void QTextEdit::append(const QString &text)

将带有 text 的新段落追加到文本编辑的末尾。

注意:追加的新段落将具有与当前段落相同的字符格式和块格式,该格式由光标位置确定。

另请参阅currentCharFormat() 和 QTextCursor::blockFormat().

[虚保护] bool QTextEdit::canInsertFromMimeData(const QMimeData *source) const

此函数如果指定的 MIME 数据对象(由 source 指定)的内容可以解码并插入到文档中,则返回 true。例如,当在拖动操作期间鼠标进入此小部件时,需要确定是否可以接受拖放操作。

重新实现此函数以支持额外的 MIME 类型。

bool QTextEdit::canPaste() const

返回是否可以从剪贴板将文本粘贴到文本编辑中。

[重载虚保护] void QTextEdit::changeEvent(QEvent *e)

重写: QFrame::changeEvent(QEvent *ev).

[槽函数] void QTextEdit::clear()

删除文本编辑中的所有文本。

注意

  • 撤消/重做历史记录也会被清除。
  • 除非 textCursor() 已经位于文档开始处,否则 currentCharFormat() 将重置。

另请参阅cut(),setPlainText() 和 setHtml().

[重载虚保护] void QTextEdit::contextMenuEvent(QContextMenuEvent *event)

重写:QAbstractScrollArea::contextMenuEvent(QContextMenuEvent *e).

显示使用createStandardContextMenu()创建的标准上下文菜单。

如果您不希望文本编辑有上下文菜单,可以将它的contextMenuPolicy设置为Qt::NoContextMenu。如果您想定制上下文菜单,重写此函数。如果您想扩展标准上下文菜单,重写此函数,调用createStandardContextMenu()并扩展返回的菜单。

事件信息通过event对象传递。

void MyTextEdit::contextMenuEvent(QContextMenuEvent *event)
{
    QMenu *menu = createStandardContextMenu();
    menu->addAction(tr("My Menu Item"));
    //...
    menu->exec(event->globalPos());
    delete menu;
}

[slot] void QTextEdit::copy()

将任何选中的文本复制到剪贴板。

另请参阅copyAvailable

[signal] void QTextEdit::copyAvailable(bool yes)

当在文本编辑中选择或取消选择文本时,发出此信号。

当选中文本时,此信号将yes设置为true。如果没有文本被选中或选中的文本被取消选中,此信号将以yes设置为false发出。

如果yes为true,则可以使用copy()将选择复制到剪贴板。如果yes为false,则copy()不执行任何操作。

另请参阅selectionChanged

[virtual protected] QMimeData *QTextEdit::createMimeDataFromSelection() const

此函数返回一个新的MIME数据对象,用于表示文本编辑当前选择的内容。当需要将选择封装到新的QMimeData对象中时调用此函数;例如,当开始拖放操作或数据复制到剪贴板时。

如果您重写此函数,请注意,返回的QMimeData对象的所有权传递给调用者。可以通过使用textCursor()函数获取选择。

QMenu *QTextEdit::createStandardContextMenu()

此函数创建当用户用鼠标右键单击文本编辑时显示的标准上下文菜单。它从默认的contextMenuEvent()处理程序中调用。弹出菜单的所有权传递给调用者。

我们建议您使用带有QPoint的版本createStandardContextMenu,这将启用对用户单击位置敏感的操作。

QMenu *QTextEdit::createStandardContextMenu(const QPoint &position)

此函数创建当用户用鼠标右键单击文本编辑时显示的标准上下文菜单。它从默认的contextMenuEvent()处理程序中调用,并获取鼠标点击的文档坐标中的position。这可以启用对用户单击位置敏感的操作。弹出菜单的所有权传递给调用者。

QTextCharFormat QTextEdit::currentCharFormat() const

返回在插入新文本时使用的字符格式。

另请参阅 setCurrentCharFormat()。

[信号] void QTextEdit::currentCharFormatChanged(const QTextCharFormat &f)

当当前字符格式发生变化时,会发出此信号,例如,由于光标位置的改变。

新的格式为 f

另请参阅 setCurrentCharFormat()。

QFont QTextEdit::currentFont() const

返回当前格式的字体。

另请参阅 setCurrentFont(),setFontFamily() 和 setFontPointSize

QTextCursor QTextEdit::cursorForPosition(const QPoint &pos) const

返回在视口坐标位置 posQTextCursor

[信号] void QTextEdit::cursorPositionChanged()

每当光标位置改变时,都会发出此信号。

QRect QTextEdit::cursorRect(const QTextCursor &cursor) const

返回一个包含 cursor 的矩形(在视口坐标中)。

QRect QTextEdit::cursorRect() const

返回包含文本编辑器光标的矩形(在视口坐标中)。

[槽] void QTextEdit::cut()

将选定的文本复制到剪贴板,并将其从文本编辑器中删除。

如果没有选定的文本,则不执行任何操作。

另请参阅 copy() 和 paste

[重写虚受保护] void QTextEdit::dragEnterEvent(QDragEnterEvent *e)

重写: QAbstractScrollArea::dragEnterEvent(QDragEnterEvent *event).

[重写虚受保护] void QTextEdit::dragLeaveEvent(QDragLeaveEvent *e)

重写: QAbstractScrollArea::dragLeaveEvent(QDragLeaveEvent *event).

[重写虚受保护] void QTextEdit::dragMoveEvent(QDragMoveEvent *e)

重写: QAbstractScrollArea::dragMoveEvent(QDragMoveEvent *event).

[重写虚受保护] void QTextEdit::dropEvent(QDropEvent *e)

重写: QAbstractScrollArea::dropEvent(QDropEvent *event).

void QTextEdit::ensureCursorVisible()

通过必要时滚动文本编辑器,确保光标是可见的。

QList<QTextEdit::ExtraSelection> QTextEdit::extraSelections() const

返回之前设置的额外选择。

另见setExtraSelections

bool QTextEdit::find(const QString &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags())

使用给定的options查找字符串exp的下一个出现位置。如果找到exp并将光标改为选择匹配项,则返回true;否则返回false

bool QTextEdit::find(const QRegularExpression &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags())

这是一个重载函数。

使用给定的options查找与正则表达式exp匹配的下一个出现位置。

如果找到匹配项并将光标改为选择匹配项,则返回true;否则返回false

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

[覆盖虚拟受保护] void QTextEdit::focusInEvent(QFocusEvent *e)

重新实现: QWidget::focusInEvent(QFocusEvent *event)。

[覆盖虚拟受保护] bool QTextEdit::focusNextPrevChild(bool next)

重新实现: QWidget::focusNextPrevChild(bool next)。

[覆盖虚拟受保护] void QTextEdit::focusOutEvent(QFocusEvent *e)

重新实现: QWidget::focusOutEvent(QFocusEvent *event)。

QString QTextEdit::fontFamily() const

返回当前格式的字体族。

另见setFontFamilysetCurrentFontsetFontPointSize

bool QTextEdit::fontItalic() const

如果当前格式的字体是斜体,则返回true;否则返回false。

另见setFontItalic

qreal QTextEdit::fontPointSize() const

返回当前格式的字体磅值。

另见setFontFamilysetCurrentFontsetFontPointSize

bool QTextEdit::fontUnderline() const

如果当前格式的字体有下划线,则返回true;否则返回false。

另见setFontUnderline

int QTextEdit::fontWeight() const

返回当前格式的字体粗细。

另请参阅setFontWeight(),setCurrentFont(),setFontPointSize()以及QFont::Weight

[重写虚拟受保护] void QTextEdit::inputMethodEvent(QInputMethodEvent *e)

重写:QWidget::inputMethodEvent(QInputMethodEvent *event)。

[重写虚拟] QVariant QTextEdit::inputMethodQuery(Qt::InputMethodQuery property) const

重写:QWidget::inputMethodQuery(Qt::InputMethodQuery query) const

[虚拟受保护] void QTextEdit::insertFromMimeData(const QMimeData *source)

此函数将指定由 source 指定的 MIME 数据对象的内容插入到文本编辑器中的当前光标位置。它在将文本插入为剪贴板粘贴操作的结果或文本编辑器在拖放操作中接受数据时被调用。

重新实现此函数以支持额外的 MIME 类型。

[槽] void QTextEdit::insertHtml(const QString &text)

这是一个方便的槽,它在当前光标位置插入被认为是 HTML 格式的 text

它等同于

edit->textCursor().insertHtml(fragment);

注意:当使用此函数与样式表时,样式表只会应用于文档中的当前块。要将在整个文档中应用样式表,请使用 QTextDocument::setDefaultStyleSheet()。

[槽] void QTextEdit::insertPlainText(const QString &text)

这是一个方便的槽,它在当前光标位置插入 text

它等同于

edit->textCursor().insertText(text);

[重写虚拟受保护] void QTextEdit::keyPressEvent(QKeyEvent *e)

重写:QAbstractScrollArea::keyPressEvent(QKeyEvent *e)。

[重写虚拟受保护] void QTextEdit::keyReleaseEvent(QKeyEvent *e)

重写:QWidget::keyReleaseEvent(QKeyEvent *event)。

[虚拟可调用] QVariant QTextEdit::loadResource(int type, const QUrl &name)

加载由给定的 typename 指定的资源。

此函数是 QTextDocument::loadResource() 的扩展。

注意:此函数可以通过元对象系统和从 QML 中调用。请参阅 Q_INVOKABLE

另请参阅QTextDocument::loadResource

void QTextEdit::mergeCurrentCharFormat(const QTextCharFormat &modifier)

通过在编辑器的光标上调用 QTextCursor::mergeCharFormatmodifier 中指定的属性合并到当前字符格式中。如果编辑器有选择,则 modifier 的属性将直接应用于选择。

另请参阅 QTextCursor::mergeCharFormat

[覆盖虚拟受保护] void QTextEdit::mouseDoubleClickEvent(QMouseEvent *e)

重实现: QAbstractScrollArea::mouseDoubleClickEvent(QMouseEvent *e)。

[覆盖虚拟受保护] void QTextEdit::mouseMoveEvent(QMouseEvent *e)

重实现: QAbstractScrollArea::mouseMoveEvent(QMouseEvent *e)。

[覆盖虚拟受保护] void QTextEdit::mousePressEvent(QMouseEvent *e)

重实现: QAbstractScrollArea::mousePressEvent(QMouseEvent *e)。

[覆盖虚拟受保护] void QTextEdit::mouseReleaseEvent(QMouseEvent *e)

重实现: QAbstractScrollArea::mouseReleaseEvent(QMouseEvent *e)。

void QTextEdit::moveCursor(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor)

通过执行给定的 operation 移动光标。

如果 modeQTextCursor::KeepAnchor,光标将选择其移过的文本。这与用户按下 Shift 键并使用光标键移动光标时达到的效果相同。

另请参阅 QTextCursor::movePosition

[覆盖虚拟受保护] void QTextEdit::paintEvent(QPaintEvent *event)

重实现: QAbstractScrollArea::paintEvent(QPaintEvent *event)。

此事件处理程序可以在子类中重新实现,以接收传递给 event 的绘图事件。通常,不需要在 QTextEdit 的子类中重新实现此函数。

注意: 如果您创建了一个 QPainter,它必须在 viewport 上操作。

警告: 不要在重新实现此函数的函数内部修改底层文本文档。

[槽] void QTextEdit::paste()

将剪贴板中的文本粘贴到文本编辑的当前光标位置。

如果剪贴板中没有文本,则不执行任何操作。

要改变此函数的行为,即修改 QTextEdit 能够粘贴的内容及其粘贴方式,需重新实现虚拟的 canInsertFromMimeData() 和 insertFromMimeData() 函数。

也请参阅cut() 和 copy()。

void QTextEdit::print(QPagedPaintDevice *printer) const

这是一个方便函数,用于将文本编辑的文档打印到给定的 printer。这相当于直接调用文档的打印方法,但此函数还支持 QPrinter::Selection 作为打印范围。

也请参阅QTextDocument::print()。

[slot] void QTextEdit::redo()

重做上一个操作。

如果没有可重做的操作,即没有可重做的撤销/重做历史步骤,则不会发生任何事情。

也请参阅undo().

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

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

[override virtual protected] void QTextEdit::resizeEvent(QResizeEvent *e)

重实: QAbstractScrollArea::resizeEvent(QResizeEvent *event)。

[override virtual protected] void QTextEdit::scrollContentsBy(int dx, int dy)

重实: QAbstractScrollArea::scrollContentsBy(int dx, int dy)。

[slot] void QTextEdit::scrollToAnchor(const QString &name)

将文本编辑滚动,使具有给定 name 的锚点可见;如果 name 为空,或已经可见,或找不到,则不执行任何操作。

[slot] void QTextEdit::selectAll()

选择所有文本。

也请参阅copy(),cut() 和 textCursor()。

[signal] void QTextEdit::selectionChanged()

每当选择更改时,都会发出此信号。

另请参阅copyAvailable

[slot] void QTextEdit::setAlignment(Qt::Alignment a)

将当前段落的对齐方式设置为 a。有效的对齐方式有 Qt::AlignLeftQt::AlignRightQt::AlignJustifyQt::AlignCenter(水平居中)。

也请参阅alignment

void QTextEdit::setCurrentCharFormat(const QTextCharFormat &format)

通过在编辑器的光标上调用 QTextCursor::setCharFormat() 设置用于插入新文本的字符格式。如果编辑器有选择,则字符格式将直接应用于选择。

另请参阅 currentCharFormat

[槽函数] void QTextEdit::setCurrentFont(const QFont &f)

将当前格式的字体设置为 f

另请参阅 currentFontsetFontPointSizesetFontFamily

void QTextEdit::setExtraSelections(const QList<QTextEdit::ExtraSelection> &selections)

此功能允许使用指定的颜色临时标记文档中的一些区域,颜色指定为 selections。例如,在编程编辑器中,可以使用此功能将整行文本标记为指定的背景颜色,以指示断点的存在。

另请参阅 QTextEdit::ExtraSelectionextraSelections

[槽函数] void QTextEdit::setFontFamily(const QString &fontFamily)

将当前格式的字体设置为 fontFamily

另请参阅 fontFamilysetCurrentFont

[槽函数] void QTextEdit::setFontItalic(bool italic)

如果 italic 为 true,则将当前格式设置为斜体;否则,将当前格式设置为非斜体。

另请参阅 fontItalic

[槽函数] void QTextEdit::setFontPointSize(qreal s)

将当前格式的磅值设置为 s

请注意,如果 s 为零或负数,此函数的行为未定义。

另请参阅 fontPointSizesetCurrentFontsetFontFamily

[槽函数] void QTextEdit::setFontUnderline(bool underline)

如果 underline 为 true,则将当前格式设置为下划线;否则,将当前格式设置为非下划线。

另请参阅 fontUnderline

[槽函数] void QTextEdit::setFontWeight(int weight)

将当前格式的字体重量设置为给定的 weight,其中使用的值是 QFont::Weight 枚举定义的范围。

参阅以下函数: fontWeight(), setCurrentFont() 和 setFontFamily().

[slot] void QTextEdit::setPlainText(const QString &text)

将文本编辑的文字更改为字符串 text。任何先前文本都会被移除。

注意

  • text 被解释为纯文本。
  • 撤消/重做历史记录也会被清除。
  • 除非 textCursor() 已经位于文档开始处,否则 currentCharFormat() 将重置。

注意: 该属性 plainText 的设置函数。

参阅以下内容: toPlainText().

[slot] void QTextEdit::setText(const QString &text)

设置文本编辑的内容 text。该文本可以是纯文本或HTML,文本编辑将尝试猜测正确的格式。

使用 setHtml() 或 setPlainText() 直接设置,以避免文本编辑进行猜测。

参阅以下内容: toPlainText() 和 toHtml().

[slot] void QTextEdit::setTextBackgroundColor(const QColor &c)

将当前格式的文本背景色设置为 c

参阅以下内容: textBackgroundColor().

[slot] void QTextEdit::setTextColor(const QColor &c)

将当前格式的文本颜色设置为 c

参阅以下内容: textColor().

void QTextEdit::setTextCursor(const QTextCursor &cursor)

设置可见的 光标

参阅以下内容: textCursor().

[override virtual protected] void QTextEdit::showEvent(QShowEvent *)

重写了: QWidget::showEvent(QShowEvent *event).

QColor QTextEdit::textBackgroundColor() const

返回当前格式的文本背景色。

参阅以下内容: setTextBackgroundColor().

[signal] void QTextEdit::textChanged()

当文档内容更改时发出此信号;例如,当文本被插入或删除,或当应用格式时。

注意: 该属性 html 的通知信号。通知信号为属性 markdown

QColor QTextEdit::textColor() const

返回当前格式的文本颜色。

参阅以下内容: setTextColor().

QTextCursor QTextEdit::textCursor() const

返回表示当前可见光标的 QTextCursor 的副本。请注意,返回的光标上的更改不会影响 QTextEdit 的光标;请使用 setTextCursor() 来更新可见光标。

另请参阅 setTextCursor().

QString QTextEdit::toPlainText() const

QString QTextEdit::toPlainText() const

返回文本编辑器中的纯文本文本。

注意: 这是属性 plainText 的获取器函数。

另请参阅 QTextEdit::setPlainText().

[slot] void QTextEdit::undo()

撤销上一个操作。

如果没有要撤销的操作,即没有撤销/重做的历史记录中的撤销步骤,则不会有任何操作。

另请参阅 redo().

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

此信号在撤销操作可用时(available 为 true)或不可用时(available 为 false)发出。

[override virtual protected] void QTextEdit::wheelEvent(QWheelEvent *e)

重新实现: QAbstractScrollArea::wheelEvent(QWheelEvent *e).

[slot] void QTextEdit::zoomIn(int range = 1)

通过使基本字体大小增加 range 点来放大文本。这不会改变任何图像的大小。

另请参阅 zoomOut().

[slot] void QTextEdit::zoomOut(int range = 1)

通过使基本字体大小减小 range 点来缩小文本。这不会改变任何图像的大小。

另请参阅 zoomIn().

© 2024 Qt公司有限公司。本文档中的文档贡献是其各自所有者的版权。本文档根据自由软件基金会发布的 GNU自由文档许可证版本1.3 的条款提供许可。Qt及其标志是芬兰和/或其他国家的Qt公司有限公司的商标。所有其他商标均为其各自所有者的财产。