QTextEdit Class

QTextEdit 类提供了一个用于编辑和显示纯文本和富文本的 widget。更多

Header: #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 是一款先进的所见即所得查看器/编辑器,支持使用 HTML 风格标记或 Markdown 格式的富文本格式。它经过优化,可处理大型文档并快速响应用户输入。

QTextEdit 可处理段落和字符。段落是一个格式化的字符串,它被单词包裹以适应小工具的宽度。默认情况下,在阅读纯文本时,一个换行符表示一个段落。文档由零个或多个段落组成。段落中的文字按照段落的对齐方式对齐。段落之间用硬换行符隔开。段落中的每个字符都有自己的属性,例如字体和颜色。

QTextEdit 可以显示图像、列表和表格。如果文本太大,无法在文本编辑器的视窗中查看,就会出现滚动条。文本编辑器可以加载纯文本和富文本文件。富文本可以使用 HTML 4 标记的子集来描述;更多信息请参阅 "支持的 HTML 子集"页面。

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

Qt 中的富文本支持旨在提供一种快速、可移植和高效的方式,为应用程序添加合理的在线帮助设施,并为富文本编辑器提供基础。如果您觉得 HTML 支持不能满足您的需求,您可以考虑使用 Qt WebKit,它提供了一个全功能的网页浏览器 widget。

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 还能在文档中插入表格或列表等复杂对象,并能创建选区和对选中的文本进行修改。

默认情况下,文本编辑器会在空白处对单词进行包装,以适应文本编辑器 widget 的大小。setLineWrapMode() 函数用于指定所需的换行类型,如果不需要换行,则使用NoWrap 。调用setLineWrapMode() 可设置固定像素宽度FixedPixelWidth ,或字符列(如 80 列)FixedColumnWidth ,像素或列数用setLineWrapColumnOrWidth() 指定。如果使用文字换行来设置 widget 的宽度WidgetWidth ,则可以使用setWordWrapMode() 指定是在空白处还是在任何地方断开。

find() 函数可用于查找和选择文本中的给定字符串。

如果你想限制 QTextEdit 中的段落总数,例如在日志查看器中经常用到的段落总数,那么你可以使用QTextDocument 的 maximumBlockCount 属性。

只读键绑定

只读使用 QTextEdit 时,按键绑定仅限于导航,只能用鼠标选择文本:

按键操作
上移向上移动一行
向下向下移动一行。
向左向左移动一个字符。
向右向右移动一个字符。
上一页向上移动一页(视口)。
下一页向下移动一个(视口)页面。
首页移动到文本的起始位置。
结束移动到文本的末尾。
Alt+ 滚轮水平滚动页面(滚轮即鼠标滚轮)。
Ctrl+Wheel缩放文本。
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 QTextEdit 提供了一个 () 函数,如果文本在加载后或上次调用以 false 为参数的 setModified 后被修改,该函数将返回 true。此外,它还提供了撤销和重做的方法。isModified

拖放

QTextEdit 还支持自定义拖放行为。默认情况下,当用户将纯文本、HTML 和富文本这些 MIME 类型的数据拖放到文档上时,QTextEdit 将插入这些数据。重新实现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 中解压缩,并将其作为资源插入到文档中。

编辑键绑定

用于编辑的键绑定列表:

按键操作
退格删除光标左侧的字符。
删除删除光标右侧的字符。
Ctrl+C将选中的文本复制到剪贴板。
Ctrl+Insert将选中的文本复制到剪贴板。
Ctrl+K删除至行尾。
Ctrl+V将剪贴板中的文本粘贴到文本编辑器中。
Shift+ 插入将剪贴板文本粘贴到文本编辑器中。
Ctrl+X删除选中的文本并将其复制到剪贴板。
Shift+ 删除删除选中的文本并将其复制到剪贴板。
Ctrl+Z撤销上次操作。
Ctrl+Y重做上次操作。
向左将光标向左移动一个字符。
Ctrl+Left将光标向左移动一个字。
向右将光标向右移动一个字符。
Ctrl+Right将光标向右移动一个字符。
向上将光标向上移动一行。
向下将光标向下移动一行。
上一页将光标向上移动一页。
下一页将光标向下移动一页。
首页将光标移至行首。
Ctrl+ 主页将光标移至文本开头。
结束将光标移至行尾。
Ctrl+End将光标移至文本末尾。
Alt+Wheel水平滚动页面(滚轮即鼠标滚轮)。

要选择(标记)文本,请按住 Shift 键,同时按下其中一个移动键,例如,Shift+Right将选择右边的字符,Shift+Ctrl+Right将选择右边的单词,等等。

另请参阅 QTextDocument,QTextCursor,语法高亮器示例 和富文本处理

成员类型文档

枚举 QTextEdit::AutoFormattingFlag
flags QTextEdit::AutoFormatting

常量说明
QTextEdit::AutoNone0不进行任何自动格式化。
QTextEdit::AutoBulletList0x00000001自动创建弹出列表(例如,当用户在最左边一列输入星号 ('*') 或在现有列表项中按 Enter 时)。
QTextEdit::AutoAll0xffffffff应用所有自动格式化。目前只支持自动生成项目符号列表。

自动格式化类型是QFlags<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 XML 可能会提供更多。

访问功能:

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)

Notifier 信号:

void textChanged()

另请参阅 支持的 HTML 子集plainText

lineWrapColumnOrWidth : int

该属性保存了文本将被换行的位置(根据换行模式,以像素或列为单位)。

如果换行模式为FixedPixelWidth ,该值就是文本编辑器左边缘开始换行的像素数。如果换行模式为FixedColumnWidth ,则该值为从文本编辑左边缘开始的列数(以字符列为单位),文本将在该列处被换行。

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

访问功能:

int lineWrapColumnOrWidth() const
void setLineWrapColumnOrWidth(int w)

另请参阅 lineWrapMode

lineWrapMode : LineWrapMode

该属性用于设置换行模式

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

访问功能:

QTextEdit::LineWrapMode lineWrapMode() const
void setLineWrapMode(QTextEdit::LineWrapMode mode)

另请参见 lineWrapColumnOrWidth

markdown : QString

该属性为文本编辑器的文本提供了一个 Markdown 接口。

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

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)

Notifier 信号:

void textChanged()

另请参阅 plainText,html,QTextDocument::toMarkdown() 和QTextDocument::setMarkdown() 。

overwriteMode : bool

该属性表示用户输入的文本是否会覆盖现有文本。

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

如果该属性为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::ShowTabsAndSpacesQTextDocument::defaultTextOption

textInteractionFlags : Qt::TextInteractionFlags

指定 widget 与用户输入的交互方式。

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

访问功能:

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

undoRedoEnabled : bool

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

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

访问功能:

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)

构造一个 QTextEdit,其父节点为parent 。文本编辑器将显示文本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 。例如,在拖动操作过程中,鼠标进入该 widget 时,需要确定是否可以接受拖放操作,这时就会调用该函数。

重新实现该函数可为其他 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 为假,则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

返回QTextCursor ,位置为pos (视口坐标)。

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

方便槽,用于在当前光标位置插入假定为 html 格式的text

它等同于

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)

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

该函数是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 移动光标。

如果modeQTextCursor::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 。这等同于直接调用文档的打印方法,只是该函数还支持将 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::AlignLeft,Qt::AlignRight,Qt::AlignJustifyQt::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::ExtraSelectionextraSelections() 。

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

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

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

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

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

另请参阅 fontItalic().

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

将当前格式的点尺寸设置为s

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

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

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

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

另请参见 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() 常量

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

注: 属性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()。

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