本页内容

QTextEdit Class

QTextEdit 类提供了一个用于编辑和显示纯文本及富文本的小部件。更多内容...

标题: #include <QTextEdit>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
继承自: QAbstractScrollArea
被继承者:

QTextBrowser

公共类型

struct ExtraSelection
flags AutoFormatting
enum AutoFormattingFlag { AutoNone, AutoBulletList, AutoAll }
enum LineWrapMode { NoWrap, WidgetWidth, FixedPixelWidth, FixedColumnWidth }

属性

公共函数

QTextEdit(QWidget *parent = nullptr)
QTextEdit(const QString &text, QWidget *parent = nullptr)
virtual ~QTextEdit()
bool acceptRichText() const
Qt::Alignment alignment() const
QString anchorAt(const QPoint &pos) const
QTextEdit::AutoFormatting autoFormatting() const
bool canPaste() const
QMenu *createStandardContextMenu()
QMenu *createStandardContextMenu(const QPoint &position)
QTextCharFormat currentCharFormat() const
QFont currentFont() const
QTextCursor cursorForPosition(const QPoint &pos) const
QRect cursorRect() const
QRect cursorRect(const QTextCursor &cursor) const
int cursorWidth() const
QTextDocument *document() const
QString documentTitle() const
void ensureCursorVisible()
QList<QTextEdit::ExtraSelection> extraSelections() const
bool find(const QString &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags())
bool find(const QRegularExpression &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags())
QString fontFamily() const
bool fontItalic() const
qreal fontPointSize() const
bool fontUnderline() const
int fontWeight() const
bool isReadOnly() const
bool isUndoRedoEnabled() const
int lineWrapColumnOrWidth() const
QTextEdit::LineWrapMode lineWrapMode() const
virtual QVariant loadResource(int type, const QUrl &name)
void mergeCurrentCharFormat(const QTextCharFormat &modifier)
void moveCursor(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor)
bool overwriteMode() const
QString placeholderText() const
void print(QPagedPaintDevice *printer) const
void setAcceptRichText(bool accept)
void setAutoFormatting(QTextEdit::AutoFormatting features)
void setCurrentCharFormat(const QTextCharFormat &format)
void setCursorWidth(int width)
void setDocument(QTextDocument *document)
void setDocumentTitle(const QString &title)
void setExtraSelections(const QList<QTextEdit::ExtraSelection> &selections)
void setLineWrapColumnOrWidth(int w)
void setLineWrapMode(QTextEdit::LineWrapMode mode)
void setOverwriteMode(bool overwrite)
void setPlaceholderText(const QString &placeholderText)
void setReadOnly(bool ro)
void setTabChangesFocus(bool b)
void setTabStopDistance(qreal distance)
void setTextCursor(const QTextCursor &cursor)
void setTextInteractionFlags(Qt::TextInteractionFlags flags)
void setUndoRedoEnabled(bool enable)
void setWordWrapMode(QTextOption::WrapMode policy)
bool tabChangesFocus() const
qreal tabStopDistance() const
QColor textBackgroundColor() const
QColor textColor() const
QTextCursor textCursor() const
Qt::TextInteractionFlags textInteractionFlags() const
QString toHtml() const
QString toMarkdown(QTextDocument::MarkdownFeatures features = QTextDocument::MarkdownDialectGitHub) const
QString toPlainText() const
QTextOption::WrapMode wordWrapMode() const

重新实现的公共函数

virtual QVariant inputMethodQuery(Qt::InputMethodQuery property) const override

公共插槽

void append(const QString &text)
void clear()
void copy()
void cut()
void insertHtml(const QString &text)
void insertPlainText(const QString &text)
void paste()
void redo()
void scrollToAnchor(const QString &name)
void selectAll()
void setAlignment(Qt::Alignment a)
void setCurrentFont(const QFont &f)
void setFontFamily(const QString &fontFamily)
void setFontItalic(bool italic)
void setFontPointSize(qreal s)
void setFontUnderline(bool underline)
void setFontWeight(int weight)
void setHtml(const QString &text)
void setMarkdown(const QString &markdown)
void setPlainText(const QString &text)
void setText(const QString &text)
void setTextBackgroundColor(const QColor &c)
void setTextColor(const QColor &c)
void undo()
void zoomIn(int range = 1)
void zoomOut(int range = 1)

信号

void copyAvailable(bool yes)
void currentCharFormatChanged(const QTextCharFormat &f)
void cursorPositionChanged()
void redoAvailable(bool available)
void selectionChanged()
void textChanged()
void undoAvailable(bool available)

受保护函数

virtual bool canInsertFromMimeData(const QMimeData *source) const
virtual QMimeData *createMimeDataFromSelection() const
virtual void insertFromMimeData(const QMimeData *source)

重新实现的受保护函数

virtual void changeEvent(QEvent *e) override
virtual void contextMenuEvent(QContextMenuEvent *event) override
virtual void dragEnterEvent(QDragEnterEvent *e) override
virtual void dragLeaveEvent(QDragLeaveEvent *e) override
virtual void dragMoveEvent(QDragMoveEvent *e) override
virtual void dropEvent(QDropEvent *e) override
virtual void focusInEvent(QFocusEvent *e) override
virtual bool focusNextPrevChild(bool next) override
virtual void focusOutEvent(QFocusEvent *e) override
virtual void inputMethodEvent(QInputMethodEvent *e) override
virtual void keyPressEvent(QKeyEvent *e) override
virtual void keyReleaseEvent(QKeyEvent *e) override
virtual void mouseDoubleClickEvent(QMouseEvent *e) override
virtual void mouseMoveEvent(QMouseEvent *e) override
virtual void mousePressEvent(QMouseEvent *e) override
virtual void mouseReleaseEvent(QMouseEvent *e) override
virtual void paintEvent(QPaintEvent *event) override
virtual void resizeEvent(QResizeEvent *e) override
virtual void scrollContentsBy(int dx, int dy) override
virtual void showEvent(QShowEvent *) override
virtual void wheelEvent(QWheelEvent *e) override

详细说明

简介与概念

QTextEdit 是一个高级的所见即所得 (WYSIWYG) 查看器/编辑器,支持使用 HTML 风格标签或 Markdown 格式进行富文本排版。它经过优化,能够处理大型文档并快速响应用户输入。

QTextEdit 以段落和字符为操作单位。段落是一个经过格式化的字符串,会自动换行以适应控件的宽度。默认情况下,在读取纯文本时,一个换行符即表示一个段落。 一个文档由零个或多个段落组成。段落中的单词会根据段落的对齐方式进行对齐。段落之间通过硬换行分隔。段落中的每个字符都有其自身的属性,例如字体和颜色。

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

如果您只需显示一小段富文本,请使用 `QLabel`。

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

默认情况下,QTextEdit 上鼠标光标的形状为Qt::IBeamCursor 。可通过viewport() 的 cursor 属性进行更改。

将 QTextEdit 用作显示控件

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

可通过setHtml()设置或替换文本,该方法会删除所有现有文本,并用setHtml()调用中传入的文本替换。若先调用setHtml()处理旧版HTML,随后调用toHtml(),返回的文本可能具有不同的标记结构,但渲染效果相同。可通过clear()删除全部文本。

还可以使用setMarkdown() 设置或替换文本,同样需要注意:如果随后调用toMarkdown(),返回的文本可能有所不同,但其含义将尽可能得到保留。 包含部分嵌入式 HTML 的 Markdown 可以被解析,其限制与setHtml() 相同;但toMarkdown() 仅生成“纯”Markdown,不含任何嵌入式 HTML。

文本本身可以使用QTextCursor 类,或使用便捷函数insertHtml()、insertPlainText()、append() 或paste() 插入。QTextCursor 还能够将表格或列表等复杂对象插入文档,并负责创建选区以及对选定文本应用更改。

默认情况下,文本编辑器会在空白处自动换行,以适应文本编辑控件的显示区域。可通过调用setLineWrapMode() 函数指定所需的换行方式,若不希望进行换行,则调用NoWrap 。 调用setLineWrapMode() 可设置固定像素宽度FixedPixelWidth ,或字符列数(例如 80 列)FixedColumnWidth ,其中像素或列数通过setLineWrapColumnOrWidth() 指定。若使用按控件宽度换行WidgetWidth ,可通过setWordWrapMode() 指定是否在空白处换行,或允许在任意位置换行。

find() 函数可用于在文本中查找并选中指定的字符串。

如果您想限制 QTextEdit 中的段落总数(例如,这在日志查看器中通常很有用),则可以使用QTextDocument 的 maximumBlockCount 属性来实现。

只读键位绑定

当 QTextEdit 处于只读模式时,键位绑定仅限于导航功能,且只能通过鼠标选择文本:

按键操作操作
向上向上移动一行。
向下向下移动一行。
左向左移动一个字符。
右向右移动一个字符。
PageUp向上滚动一页(视口)。
PageDown向下移动一(视口)页。
Home跳转到文本开头。
End跳转到文本末尾。
Alt+滚轮水平滚动页面(“滚轮”指鼠标滚轮)。
Ctrl+滚轮缩放文本。
Ctrl+A选中所有文本。

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

注意: 只有当字体大小未设置为固定值时,才能对 HTML 文档进行缩放 。

将 QTextEdit 用作编辑器

关于将 QTextEdit 用作显示小部件的所有信息也适用于此处。

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

文本选区由QTextCursor 类处理,该类提供了创建选区、获取文本内容或删除选区等功能。您可以使用textCursor()方法获取与用户可见光标对应的对象。 若要在 QTextEdit 中设置选区,只需在QTextCursor 对象上创建一个选区,然后使用setTextCursor() 将其设为可见光标。可通过copy() 将选区复制到剪贴板,或通过cut() 将其剪切到剪贴板。使用selectAll() 可选中整个文本。

当光标移动且底层格式化属性发生变化时,将发出currentCharFormatChanged() 信号,以反映新光标位置处的最新属性。

每当文本发生变化时(无论是由于调用setText() 方法,还是通过编辑器本身),都会发出textChanged() 信号。

QTextEdit 持有QTextDocument 对象,可通过document() 方法获取。您还可以使用setDocument() 设置自己的文档对象。

QTextDocument 该类提供了一个isModified()函数,如果文本自加载以来或自上次调用setModified并传入false参数以来被修改过,该函数将返回true。此外,它还提供了撤销和重做的方法。

拖放

QTextEdit 还支持自定义拖放行为。默认情况下,当用户将这些 MIME 类型的数据拖放到文档上时,QTextEdit 会插入纯文本、HTML 和富文本。重写canInsertFromMimeData() 和insertFromMimeData() 方法,即可添加对其他 MIME 类型的支持。

例如,若要允许用户将图像拖放至 QTextEdit 上,可按以下方式实现这些函数:

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

通过返回 true 来添加对图像 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 解包,并将其作为资源插入文档中。

编辑键绑定

已实现的编辑相关键位绑定列表:

按键操作操作
退格键删除光标左侧的字符。
Delete删除光标右侧的字符。
Ctrl+C将选中的文本复制到剪贴板。
Ctrl+Insert将选中的文本复制到剪贴板。
Ctrl+K删除至行尾。
Ctrl+V将剪贴板中的文本粘贴到文本编辑器中。
Shift+Insert将剪贴板中的文本粘贴到“文本编辑”中。
Ctrl+X删除所选文本并将其复制到剪贴板。
Shift+Delete删除所选文本并将其复制到剪贴板。
Ctrl+Z撤销上一步操作。
Ctrl+Y重做上一次操作。
左将光标向左移动一个字符。
Ctrl+左箭头将光标向左移动一个单词。
向右将光标向右移动一个字符。
Ctrl+右将光标向右移动一个单词。
上将光标向上移动一行。
向下将光标向下移动一行。
PageUp将光标向上移动一页。
PageDown将光标向下移动一页。
Home将光标移至行首。
Ctrl+Home将光标移至文本开头。
End将光标移至行尾。
Ctrl+End将光标移至文本末尾。
Alt+滚轮水平滚动页面(滚轮指鼠标滚轮)。

要选择(标记)文本,请按住 Shift 键的同时按下其中一个移动键,例如,Shift+右箭头将选择右侧的字符,Shift+Ctrl+右箭头将选择右侧的单词,以此类推。

另请参阅 QTextDocument 、QTextCursor 、语法高亮示例 以及富文本处理。

成员类型文档

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。

访问函数:

bool acceptRichText() const
void setAcceptRichText(bool accept)

autoFormatting : AutoFormatting

该属性存储已启用的自动格式设置功能集

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

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

访问函数:

QTextEdit::AutoFormatting autoFormatting() const
void setAutoFormatting(QTextEdit::AutoFormatting features)

cursorWidth : int

此属性指定光标的宽度(以像素为单位)。默认值为 1。

访问函数:

int cursorWidth() const
void setCursorWidth(int width)

document : QTextDocument*

该属性保存文本编辑器的底层文档。

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

访问函数:

QTextDocument *document() const
void setDocument(QTextDocument *document)

documentTitle : QString

该属性存储从文本中解析出的文档标题。

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

访问函数:

QString documentTitle() const
void setDocumentTitle(const QString &title)

html : QString

该属性为文本编辑框中的文本提供了一个 HTML 接口。

toHtml() 方法将文本编辑框中的文本作为 HTML 返回。

setHtml() 用于更改文本编辑框中的文本。任何先前文本都将被删除,且撤销/重做历史记录将被清空。输入的文本将被解释为 HTML 格式的富文本。currentCharFormat() 也会被重置,除非textCursor() 已位于文档开头。

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

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

访问函数:

QString toHtml() const
void setHtml(const QString &text)

通知信号:

void textChanged()

另请参阅 “支持的 HTML 子集”和“plainText ”。

lineWrapColumnOrWidth : int

该属性指定文本换行的位置(以像素或列为单位,具体取决于换行模式)

如果换行模式为FixedPixelWidth ,该值表示从文本编辑框左边缘开始,文本应换行时的像素数。如果换行模式为FixedColumnWidth ,该值表示从文本编辑框左边缘开始,文本应换行时的列数(以字符列为单位)。

默认情况下,此属性的值为 0。

访问函数:

int lineWrapColumnOrWidth() const
void setLineWrapColumnOrWidth(int w)

另请参阅 lineWrapMode 。

lineWrapMode : LineWrapMode

此属性用于设置换行模式

默认模式为WidgetWidth ,这会导致单词在文本编辑框的右边缘换行。换行发生在空白处,保持整个单词完整。如果希望在单词内部换行,请使用setWordWrapMode()。如果将换行模式设置为FixedPixelWidth 或FixedColumnWidth ,还应调用setLineWrapColumnOrWidth()并传入所需的宽度。

访问函数:

QTextEdit::LineWrapMode lineWrapMode() const
void setLineWrapMode(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 。

访问函数:

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

通知信号:

void textChanged()

另请参阅 plainText 、html 、QTextDocument::toMarkdown() 以及QTextDocument::setMarkdown()。

overwriteMode : bool

该属性用于确定用户输入的文本是否会覆盖现有文本

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

如果此属性设置为true ,则新文本将按字符逐个覆盖现有文本;否则,新文本将插入到光标位置,从而替换现有文本。

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

访问函数:

bool overwriteMode() const
void setOverwriteMode(bool overwrite)

placeholderText : QString

该属性用于存储编辑器的占位符文本

设置此属性后,只要document()为空,编辑器就会显示灰色的占位文本。

默认情况下,该属性包含一个空字符串。

访问函数:

QString placeholderText() const
void setPlaceholderText(const QString &placeholderText)

另请参阅 document()。

plainText : QString

该属性以纯文本形式存储文本编辑器的内容。

设置该属性时,先前内容将被清除,且撤销/重做历史记录将被重置。currentCharFormat() 也会被重置,除非textCursor() 已经位于文档开头。

如果文本编辑器具有另一种内容类型,则调用toPlainText() 时,该内容不会被纯文本替换。唯一的例外是不可分隔空格(nbsp;),它将被转换为标准空格。

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

访问函数:

QString toPlainText() const
void setPlainText(const QString &text)

另请参阅 html 。

readOnly : bool

该属性用于指示文本编辑框是否为只读

在只读文本编辑框中,用户只能在文本中移动光标并选中文本;无法修改文本内容。

该属性的默认值为 false。

访问函数:

bool isReadOnly() const
void setReadOnly(bool ro)

tabChangesFocus : bool

该属性决定Tab 是否会改变焦点或接受输入

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

访问函数:

bool tabChangesFocus() const
void setTabChangesFocus(bool b)

tabStopDistance : qreal

该属性存储以像素为单位的制表位间距

默认情况下,该属性的值为 80 像素。

请勿设置小于QChar::VisualTabCharacter 字符的horizontalAdvance()的数值,否则制表符将无法完整显示。

访问函数:

qreal tabStopDistance() const
void setTabStopDistance(qreal distance)

另请参阅 QTextOption::ShowTabsAndSpaces 和QTextDocument::defaultTextOption 。

textInteractionFlags : Qt::TextInteractionFlags

指定小部件应如何响应用户输入。

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

访问函数:

Qt::TextInteractionFlags textInteractionFlags() const
void setTextInteractionFlags(Qt::TextInteractionFlags flags)

undoRedoEnabled : bool

该属性控制“撤销”和“重做”功能是否启用。

只有当此属性为 true,且存在可撤销(或可重做)的操作时,用户才能撤销或重做操作。

访问函数:

bool isUndoRedoEnabled() const
void setUndoRedoEnabled(bool enable)

wordWrapMode : QTextOption::WrapMode

此属性用于指定QTextEdit 在按单词换行时采用的模式

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

访问函数:

QTextOption::WrapMode wordWrapMode() const
void setWordWrapMode(QTextOption::WrapMode policy)

另请参阅 QTextOption::WrapMode 。

成员函数文档

[explicit] QTextEdit::QTextEdit(QWidget *parent = nullptr)

创建一个父对象为parent 的空QTextEdit。

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

创建一个父类为parent 的QTextEdit。该文本编辑框将显示文本text 。该文本将被解释为HTML。

[virtual noexcept] QTextEdit::~QTextEdit()

析构函数。

Qt::Alignment QTextEdit::alignment() const

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

另请参阅 setAlignment()。

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

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

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

在文本编辑框末尾插入一个以“text ”开头的新段落。

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

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

[virtual protected] bool QTextEdit::canInsertFromMimeData(const QMimeData *source) const

如果由 `source` 指定的 MIME 数据对象的内容能够被解码并插入到文档中,则该函数返回 `true `。例如,当在拖拽操作过程中鼠标进入此控件时,需要确定是否可以接受该拖放操作,此时会调用该函数。

重写此函数以支持其他 MIME 类型的拖放功能。

bool QTextEdit::canPaste() const

返回一个值,表示是否可以将剪贴板中的文本粘贴到文本编辑框中。

[override virtual protected] void QTextEdit::changeEvent(QEvent *e)

重写了:QFrame::changeEvent(QEvent *ev)。

[slot] void QTextEdit::clear()

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

注:

另请参阅 cut()、setPlainText() 和setHtml()。

[override virtual protected] 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()处理程序调用。弹出菜单的所有权将转移给调用方。

我们建议您改用 createStandardContextMenu(QPoint) 版本,该版本将启用与用户点击位置相关的操作。

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

该函数用于创建标准上下文菜单,当用户右键单击文本编辑框时,该菜单会显示出来。该函数由默认的contextMenuEvent()处理程序调用,并接收鼠标单击位置的position (以文档坐标系表示)。这使得可以实现根据用户单击位置触发的操作。弹出菜单的所有权将转移给调用方。

QTextCharFormat QTextEdit::currentCharFormat() const

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

另请参阅 setCurrentCharFormat()。

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

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

新格式为f 。

另请参阅 setCurrentCharFormat()。

QFont QTextEdit::currentFont() const

返回当前格式的字体。

另请参阅 setCurrentFont()、setFontFamily() 和setFontPointSize()。

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

返回位于pos (视口坐标系下)位置处的QTextCursor 。

[signal] void QTextEdit::cursorPositionChanged()

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

QRect QTextEdit::cursorRect() const

返回一个矩形(以视口坐标为单位),该矩形包含文本编辑框的光标。

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

返回一个矩形(以视口坐标为单位),该矩形包含cursor 。

[slot] void QTextEdit::cut()

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

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

另请参阅 copy() 和paste()。

[override virtual protected] void QTextEdit::dragEnterEvent(QDragEnterEvent *e)

重写了:QAbstractScrollArea::dragEnterEvent(QDragEnterEvent *event)。

[override virtual protected] void QTextEdit::dragLeaveEvent(QDragLeaveEvent *e)

重写了:QAbstractScrollArea::dragLeaveEvent(QDragLeaveEvent *event)。

[override virtual protected] void QTextEdit::dragMoveEvent(QDragMoveEvent *e)

重写了:QAbstractScrollArea::dragMoveEvent(QDragMoveEvent *event)。

[override virtual protected] 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 来确定搜索是否区分大小写。

这是一个重载函数。

[override virtual protected] void QTextEdit::focusInEvent(QFocusEvent *e)

重写了:QWidget::focusInEvent(QFocusEvent *event)。

[override virtual protected] bool QTextEdit::focusNextPrevChild(bool next)

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

[override virtual protected] void QTextEdit::focusOutEvent(QFocusEvent *e)

重写了:QWidget::focusOutEvent(QFocusEvent *event)。

QString QTextEdit::fontFamily() const

返回当前格式的字体家族。

另请参阅 setFontFamily()、setCurrentFont() 和setFontPointSize()。

bool QTextEdit::fontItalic() const

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

另请参阅 setFontItalic()。

qreal QTextEdit::fontPointSize() const

返回当前格式的字体点大小。

另请参阅 setFontFamily()、setCurrentFont() 和setFontPointSize()。

bool QTextEdit::fontUnderline() const

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

另请参阅 setFontUnderline()。

int QTextEdit::fontWeight() const

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

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

[override virtual protected] void QTextEdit::inputMethodEvent(QInputMethodEvent *e)

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

[override virtual] QVariant QTextEdit::inputMethodQuery(Qt::InputMethodQuery property) const

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

[virtual protected] void QTextEdit::insertFromMimeData(const QMimeData *source)

该函数将由source 指定的MIME数据对象的内容插入到文本编辑框中当前光标位置。每当通过剪贴板粘贴操作插入文本,或者文本编辑框接受拖放操作的数据时,都会调用该函数。

重写此函数以启用对其他 MIME 类型的拖放支持。

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

一个便捷插槽,用于在当前光标位置插入text ,该内容被视为HTML格式。

其效果等同于:

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

注意:当 与样式表配合使用此函数时, 样式表仅适用于文档中的当前块。若要将样式表应用于整个文档,请改用QTextDocument::setDefaultStyleSheet()。

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

一个便捷插入槽,用于将text 插入到当前光标位置。

这相当于

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

[override virtual protected] void QTextEdit::keyPressEvent(QKeyEvent *e)

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

[override virtual protected] void QTextEdit::keyReleaseEvent(QKeyEvent *e)

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

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

加载由给定的type 和name 指定的资源。

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

注意: 可通过元对象系统或从 QML 中调用此 函数。参见Q_INVOKABLE 。

另请参阅 QTextDocument::loadResource()。

void QTextEdit::mergeCurrentCharFormat(const QTextCharFormat &modifier)

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

另请参阅 QTextCursor::mergeCharFormat()。

[override virtual protected] void QTextEdit::mouseDoubleClickEvent(QMouseEvent *e)

重写了:QAbstractScrollArea::mouseDoubleClickEvent(QMouseEvent *e)。

[override virtual protected] void QTextEdit::mouseMoveEvent(QMouseEvent *e)

重写了:QAbstractScrollArea::mouseMoveEvent(QMouseEvent *e)。

[override virtual protected] void QTextEdit::mousePressEvent(QMouseEvent *e)

重写了:QAbstractScrollArea::mousePressEvent(QMouseEvent *e)。

[override virtual protected] void QTextEdit::mouseReleaseEvent(QMouseEvent *e)

重写了:QAbstractScrollArea::mouseReleaseEvent(QMouseEvent *e)。

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

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

如果mode 的值为QTextCursor::KeepAnchor ,则光标会选中其移动经过的文本。这与用户按住Shift键并使用方向键移动光标时所产生的效果相同。

另请参阅 QTextCursor::movePosition()。

[override virtual protected] void QTextEdit::paintEvent(QPaintEvent *event)

重写自:QAbstractScrollArea::paintEvent(QPaintEvent *event)。

子类可以重写此事件处理函数,以接收通过 `event` 传递的绘制事件。通常在 `QTextEdit` 的子类中无需重写此函数。

注意:若 创建QPainter ,其必须基于viewport() 进行操作。

警告: 在本函数的重写实现中,不得修改底层文本文档 。

[slot] void QTextEdit::paste()

将剪贴板中的文本粘贴到文本编辑框中,粘贴位置为当前光标所在处。

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

若要更改此函数的行为,即修改QTextEdit 可粘贴的内容及其粘贴方式,请重写虚拟函数canInsertFromMimeData()和insertFromMimeData()。

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

void QTextEdit::print(QPagedPaintDevice *printer) const

一个便捷函数,用于将文本编辑器的文档打印到指定的printer 上。这相当于直接调用文档的print方法,不同之处在于该函数还支持将QPrinter::Selection作为打印范围。

另请参阅 QTextDocument::print()。

[slot] void QTextEdit::redo()

重做上一次操作。

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

另请参阅 undo()。

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

每当重做操作可用(available 为真)或不可用(available 为假)时,都会触发此信号。

[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::AlignLeft 、Qt::AlignRight 、Qt::AlignJustify 以及Qt::AlignCenter (水平居中)。

另请参阅 alignment()。

void QTextEdit::setCurrentCharFormat(const QTextCharFormat &format)

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

另请参阅 currentCharFormat()。

[slot] void QTextEdit::setCurrentFont(const QFont &f)

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

另请参阅 currentFont()、setFontPointSize() 和setFontFamily()。

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

该函数允许使用指定的颜色(通过selections 指定)临时标记文档中的某些区域。例如,在编程编辑器中,这可用于将整行文本标记为指定的背景色,以指示存在断点。

另请参阅 QTextEdit::ExtraSelection 和extraSelections()。

[slot] void QTextEdit::setFontFamily(const QString &fontFamily)

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

另请参阅 fontFamily() 和setCurrentFont()。

[slot] void QTextEdit::setFontItalic(bool italic)

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

另请参阅 fontItalic()。

[slot] void QTextEdit::setFontPointSize(qreal s)

将当前格式的字号设置为s 。

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

另请参阅 fontPointSize()、setCurrentFont() 和setFontFamily()。

[slot] void QTextEdit::setFontUnderline(bool underline)

如果underline 为真,则将当前格式设置为带下划线;否则,将当前格式设置为不带下划线。

另请参阅 fontUnderline()。

[slot] void QTextEdit::setFontWeight(int weight)

将当前格式的字体粗细设置为给定的weight ,其中使用的值必须在QFont::Weight 枚举所定义的范围内。

另请参阅 fontWeight()、setCurrentFont() 和setFontFamily()。

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

将文本编辑框中的内容更改为字符串text 。之前的所有内容将被清除。

注:

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

注意: 这是属性 `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)

设置可见的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()。

© 2026 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.