QPlainTextEdit Class
QPlainTextEdit 类提供了一个用于编辑和显示纯文本的控件。更多内容...
| 头文件: | #include <QPlainTextEdit> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| 继承自: | QAbstractScrollArea |
- 所有成员列表(包括继承的成员)
- QPlainTextEdit 属于富文本处理 API 的一部分。
公共类型
| enum | LineWrapMode { NoWrap, WidgetWidth } |
属性
|
|
公共函数
| QPlainTextEdit(QWidget *parent = nullptr) | |
| QPlainTextEdit(const QString &text, QWidget *parent = nullptr) | |
| virtual | ~QPlainTextEdit() |
| QString | anchorAt(const QPoint &pos) const |
| bool | backgroundVisible() const |
| int | blockCount() const |
| bool | canPaste() const |
| bool | centerOnScroll() const |
| QMenu * | createStandardContextMenu() |
| QMenu * | createStandardContextMenu(const QPoint &position) |
| QTextCharFormat | currentCharFormat() 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()) |
| bool | isReadOnly() const |
| bool | isUndoRedoEnabled() const |
| QPlainTextEdit::LineWrapMode | lineWrapMode() const |
| virtual QVariant | loadResource(int type, const QUrl &name) |
| int | maximumBlockCount() const |
| 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 | setBackgroundVisible(bool visible) |
| void | setCenterOnScroll(bool enabled) |
| 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 | setLineWrapMode(QPlainTextEdit::LineWrapMode mode) |
| void | setMaximumBlockCount(int maximum) |
| 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 |
| QTextCursor | textCursor() const |
| Qt::TextInteractionFlags | textInteractionFlags() const |
| QString | toPlainText() const |
| QTextOption::WrapMode | wordWrapMode() const |
重新实现的公共函数
| virtual QVariant | inputMethodQuery(Qt::InputMethodQuery property) const override |
公共插槽
| void | appendHtml(const QString &html) |
| void | appendPlainText(const QString &text) |
| void | centerCursor() |
| void | clear() |
| void | copy() |
| void | cut() |
| void | insertPlainText(const QString &text) |
| void | paste() |
| void | redo() |
| void | selectAll() |
| void | setPlainText(const QString &text) |
| void | undo() |
| void | zoomIn(int range = 1) |
| void | zoomOut(int range = 1) |
信号
| void | blockCountChanged(int newBlockCount) |
| void | copyAvailable(bool yes) |
| void | cursorPositionChanged() |
| void | modificationChanged(bool changed) |
| void | redoAvailable(bool available) |
| void | selectionChanged() |
| void | textChanged() |
| void | undoAvailable(bool available) |
| void | updateRequest(const QRect &rect, int dy) |
受保护函数
| QRectF | blockBoundingGeometry(const QTextBlock &block) const |
| QRectF | blockBoundingRect(const QTextBlock &block) const |
| virtual bool | canInsertFromMimeData(const QMimeData *source) const |
| QPointF | contentOffset() const |
| virtual QMimeData * | createMimeDataFromSelection() const |
| QTextBlock | firstVisibleBlock() const |
| QAbstractTextDocumentLayout::PaintContext | getPaintContext() 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 *e) 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 |
详细说明
简介与概念
QPlainTextEdit 是一款支持纯文本的高级查看器/编辑器。它经过优化,能够处理大型文档,并能快速响应用户输入。
QPlainText 采用的技术和概念与QTextEdit 基本相同,但针对纯文本处理进行了优化。
QPlainTextEdit 以段落和字符为单位进行操作。段落是一个经过格式化的字符串,会自动换行以适应控件的宽度。默认情况下,在读取纯文本时,一个换行符代表一个段落。 一个文档由零个或多个段落组成。段落之间以硬换行分隔。段落中的每个字符都有其自身的属性,例如字体和颜色。
QPlainTextEdit 上鼠标光标的默认形状为Qt::IBeamCursor 。可通过viewport() 的 cursor 属性进行更改。
将 QPlainTextEdit 用作显示控件
文本的设置或替换通过setPlainText() 实现,该函数会删除现有文本,并用传递给setPlainText() 的文本替换。
可以通过QTextCursor 类,或使用便捷函数insertPlainText()、appendPlainText() 或paste() 来插入文本。
默认情况下,文本编辑器会在空白处换行,以适应文本编辑控件的宽度。setLineWrapMode() 函数用于指定所需的换行方式;若不希望进行换行,可使用WidgetWidth 或NoWrap 。若使用按控件宽度换行(WidgetWidth ),可通过setWordWrapMode() 指定是在空白处换行还是在任意位置换行。
可以使用find() 函数在文本中查找并选中指定的字符串。
如果您希望限制 QPlainTextEdit 中的段落总数(例如在日志查看器中非常有用),则可以使用maximumBlockCount 属性。将setMaximumBlockCount() 与appendPlainText() 结合使用,可将 QPlainTextEdit 转变为高效的日志文本查看器。 通过centerOnScroll()属性可以减少滚动操作,从而使日志查看器运行得更快。 文本可以进行有限的格式化,既可以使用语法高亮(见下文),也可以通过appendHtml() 附加 HTML 格式的文本。虽然 QPlainTextEdit 不支持包含表格和浮动对象的复杂富文本渲染,但它支持日志查看器中可能需要的有限的基于段落的格式化。
只读模式下的键盘快捷键
当 QPlainTextEdit 处于只读模式时,键绑定仅限于导航功能,且只能使用鼠标选择文本:
| 按键操作 | 操作 |
|---|---|
| Qt::UpArrow | 向上移动一行。 |
| Qt::DownArrow | 向下移动一行。 |
| Qt::LeftArrow | 向左移动一个字符。 |
| Qt::RightArrow | 向右移动一个字符。 |
| PageUp | 向上移动一页(视口)。 |
| PageDown | 向右移动一个(视口)页面。 |
| Home | 跳转到文本开头。 |
| End | 跳转到文本末尾。 |
| Alt+滚轮 | 水平滚动页面(“滚轮”指鼠标滚轮)。 |
| Ctrl+滚轮 | 缩放文本。 |
| Ctrl+A | 全选文本。 |
将 QPlainTextEdit 用作编辑器
关于将 QPlainTextEdit 用作显示控件的所有信息在此同样适用。
文本的选择由QTextCursor 类处理,该类提供了创建选择、检索文本内容或删除选择的功能。您可以使用textCursor()方法获取与用户可见光标相对应的对象。 若要在 QPlainTextEdit 中设置选区,只需在QTextCursor 对象上创建一个选区,然后通过setCursor() 将其设为可见光标。可通过copy() 将选区复制到剪贴板,或通过cut() 将其剪切到剪贴板。使用selectAll() 可选中整个文本。
QPlainTextEdit 持有QTextDocument 对象,可通过document() 方法获取该对象。 您还可以使用setDocument()设置自己的文档对象。QTextDocument 在文本发生变化时会发出textChanged()信号,并提供isModified()函数——如果文本自加载以来或自上次以false作为参数调用setModified()以来发生过修改,该函数将返回true。此外,它还提供了撤销和重做的方法。
语法高亮
与QTextEdit 一样,QPlainTextEdit也与QSyntaxHighlighter 配合使用。
编辑键位绑定
已实现的编辑相关键盘快捷键列表:
| 按键操作 | 操作 |
|---|---|
| 退格键 | 删除光标左侧的字符。 |
| Delete | 删除光标右侧的字符。 |
| Ctrl+C | 将选中的文本复制到剪贴板。 |
| Ctrl+Insert | 将选中的文本复制到剪贴板。 |
| Ctrl+K | 删除至行尾。 |
| Ctrl+V | 将剪贴板中的文本粘贴到文本编辑器中。 |
| Shift+Insert | 将剪贴板中的文本粘贴到文本编辑器中。 |
| Ctrl+X | 删除所选文本并将其复制到剪贴板。 |
| Shift+Delete | 删除所选文本并将其复制到剪贴板。 |
| Ctrl+Z | 撤销上一步操作。 |
| Ctrl+Y | 重做上一项操作。 |
| 左箭头 | 将光标向左移动一个字符。 |
| Ctrl+向左箭头 | 将光标向左移动一个单词。 |
| 右箭头 | 将光标向右移动一个字符。 |
| Ctrl+右箭头 | 将光标向右移动一个单词。 |
| 向上箭头 | 将光标向上移动一行。 |
| Ctrl+上箭头 | 将光标向上移动一个单词。 |
| 向下箭头 | 将光标向下移动一行。 |
| Ctrl+向下箭头 | 将光标向下移动一个单词。 |
| PageUp | 将光标向上移动一页。 |
| PageDown | 将光标向下移动一页。 |
| Home | 将光标移至行首。 |
| Ctrl+Home | 将光标移至文本开头。 |
| End | 将光标移至行尾。 |
| Ctrl+End | 将光标移至文本末尾。 |
| Alt+滚轮 | 水平滚动页面(“滚轮”指鼠标滚轮)。 |
| Ctrl+滚轮 | 缩放文本。 |
要选择(标记)文本,请按住 Shift 键的同时按下其中一个移动键,例如,Shift+右箭头键将选择右侧的字符,Shift+Ctrl+右箭头键将选择右侧的单词,等等。
与 QTextEdit 的区别
QPlainTextEdit 是一个轻量级类,其实现主要采用了QTextEdit 和QTextDocument 背后的技术。它相对于QTextEdit 的性能优势主要源于在文本文档中使用了一种不同且简化的文本布局,即QPlainTextDocumentLayout (参见QTextDocument::setDocumentLayout())。 这种纯文本文档布局不支持表格和嵌入式框架,并用逐行或逐段滚动的方式取代了像素级精确的高度计算。 这使得系统能够处理规模显著更大的文档,同时仍可在启用换行功能的情况下实时调整编辑器大小。这也使得日志查看器运行迅速(参见setMaximumBlockCount())。
{语法高亮示例}, {富文本处理}
另请参阅 QTextDocument 和QTextCursor 。
属性文档
backgroundVisible : bool
该属性控制调色板背景是否在文档区域外可见
如果设置为 true,纯文本编辑器会在未被文本文档覆盖的视口区域绘制调色板背景。否则,如果设置为 false,则不会绘制。此功能使用户能够直观地区分以调色板基础颜色绘制的文档区域与未被任何文档覆盖的空白区域。
默认值为 false。
访问函数:
| bool | backgroundVisible() const |
| void | setBackgroundVisible(bool visible) |
[read-only] blockCount : int
该属性存储文档中文本块的数量。
默认情况下,在空文档中,该属性的值为 1。
访问函数:
| int | blockCount() const |
centerOnScroll : bool
该属性控制光标是否应在屏幕上居中
如果设置为 true,纯文本编辑框会垂直滚动文档,使光标在视口中心处可见。这还会允许文本编辑框滚动到文档末尾之后。否则,如果设置为 false,纯文本编辑框会尽可能少地滚动,以确保光标可见。 通过 `appendPlainText()` 追加的任何新行也将应用相同的算法。
默认值为 false。
访问函数:
| bool | centerOnScroll() const |
| void | setCenterOnScroll(bool enabled) |
另请参阅 centerCursor() 和ensureCursorVisible()。
cursorWidth : int
此属性指定光标的宽度(以像素为单位)。默认值为 1。
访问函数:
| int | cursorWidth() const |
| void | setCursorWidth(int width) |
documentTitle : QString
该属性保存了从文本中解析出的文档标题。
默认情况下,该属性包含一个空字符串。
访问函数:
| QString | documentTitle() const |
| void | setDocumentTitle(const QString &title) |
lineWrapMode : LineWrapMode
此属性用于设置换行模式
默认模式为WidgetWidth ,这会导致单词在文本编辑框的右边缘换行。换行发生在空白处,保持整个单词完整。若希望在单词内部换行,请使用setWordWrapMode()。
访问函数:
| QPlainTextEdit::LineWrapMode | lineWrapMode() const |
| void | setLineWrapMode(QPlainTextEdit::LineWrapMode mode) |
maximumBlockCount : int
此属性用于指定文档中块的上限。
指定文档中允许包含的块的最大数量。如果文档中的块数量超过了此属性指定的数量,则会从文档开头移除多余的块。
负值或零值表示文档中可以包含无限数量的块。
默认值为 0。
请注意,设置此属性后,该限制将立即应用于文档内容。设置此属性还会禁用“撤销/重做”历史记录。
访问函数:
| int | maximumBlockCount() const |
| void | setMaximumBlockCount(int maximum) |
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() 已位于文档开头。
默认情况下,对于没有内容的编辑器,该属性包含一个空字符串。
访问函数:
| QString | toPlainText() const |
| void | setPlainText(const QString &text) |
通知信号:
| void | textChanged() |
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
指定当标签显示文本时,应如何响应用户输入。
如果标志中包含Qt::LinksAccessibleByKeyboard 或Qt::TextSelectableByKeyboard ,则焦点策略也会自动设置为Qt::ClickFocus 。
默认值取决于QPlainTextEdit 是只读的还是可编辑的。
访问函数:
| Qt::TextInteractionFlags | textInteractionFlags() const |
| void | setTextInteractionFlags(Qt::TextInteractionFlags flags) |
undoRedoEnabled : bool
该属性用于控制“撤销”和“重做”功能是否启用
只有当此属性为 true 且存在可撤销(或重做)的操作时,用户才能撤销或重做操作。
默认情况下,该属性的值为true 。
访问函数:
| bool | isUndoRedoEnabled() const |
| void | setUndoRedoEnabled(bool enable) |
wordWrapMode : QTextOption::WrapMode
此属性用于指定QPlainTextEdit 在按单词换行时采用的模式
默认情况下,此属性设置为QTextOption::WrapAtWordBoundaryOrAnywhere 。
访问函数:
| QTextOption::WrapMode | wordWrapMode() const |
| void | setWordWrapMode(QTextOption::WrapMode policy) |
另请参阅 QTextOption::WrapMode 。
成员函数文档
[explicit] QPlainTextEdit::QPlainTextEdit(QWidget *parent = nullptr)
创建一个父容器为parent 的空QPlainTextEdit对象。
[explicit] QPlainTextEdit::QPlainTextEdit(const QString &text, QWidget *parent = nullptr)
创建一个父类为parent 的QPlainTextEdit。该文本编辑框将显示纯文本text 。
[virtual noexcept] QPlainTextEdit::~QPlainTextEdit()
析构函数。
QString QPlainTextEdit::anchorAt(const QPoint &pos) const
返回位于位置pos 处的锚点的引用;如果该位置不存在锚点,则返回空字符串。
[slot] void QPlainTextEdit::appendHtml(const QString &html)
在文本编辑框末尾插入一个包含html 的新段落。
[slot] void QPlainTextEdit::appendPlainText(const QString &text)
在文本编辑框末尾添加一个包含text 的新段落。
另请参阅 appendHtml()。
[protected] QRectF QPlainTextEdit::blockBoundingGeometry(const QTextBlock &block) const
返回文本block 在内容坐标系中的边界矩形。使用contentOffset()对该矩形进行平移,即可获得视口上的视觉坐标。
另请参阅 firstVisibleBlock() 和blockBoundingRect()。
[protected] QRectF QPlainTextEdit::blockBoundingRect(const QTextBlock &block) const
返回文本block 在该块自身坐标系中的边界矩形。
另请参阅 blockBoundingGeometry()。
[signal] void QPlainTextEdit::blockCountChanged(int newBlockCount)
每当区块计数发生变化时,都会触发此信号。新的区块计数将通过newBlockCount 传递进来。
[virtual protected] bool QPlainTextEdit::canInsertFromMimeData(const QMimeData *source) const
如果由source 指定的MIME数据对象的内容能够被解码并插入到文档中,则该函数返回true 。例如,当在拖拽操作过程中鼠标进入此控件时,若需要确定是否可以接受该拖拽操作,就会调用此函数。
bool QPlainTextEdit::canPaste() const
返回是否可以将剪贴板中的文本粘贴到文本编辑框中。
[slot] void QPlainTextEdit::centerCursor()
滚动文档,使光标在垂直方向居中。
另请参阅 ensureCursorVisible() 和centerOnScroll 。
[override virtual protected] void QPlainTextEdit::changeEvent(QEvent *e)
重写了:QFrame::changeEvent(QEvent *ev)。
[slot] void QPlainTextEdit::clear()
删除文本编辑框中的所有文本。
注:
- 撤销/重做历史记录也将被清空。
- currentCharFormat() 将被重置,除非textCursor() 已位于文档开头。
另请参阅 cut() 和setPlainText()。
[protected] QPointF QPlainTextEdit::contentOffset() const
返回内容在视口坐标系中的起始位置。
纯文本编辑框中内容的原点始终是第一个可见文本块的左上角。 当文本已水平滚动,或者第一个可见文本块已部分滚出屏幕(即可见文本并非从第一个可见文本块的第一行开始),或者当第一个可见文本块是第一个文本块且编辑器显示了边距时,内容的偏移量将不同于 (0,0)。
另请参阅 firstVisibleBlock()、horizontalScrollBar() 和verticalScrollBar()。
[override virtual protected] void QPlainTextEdit::contextMenuEvent(QContextMenuEvent *event)
重写:QAbstractScrollArea::contextMenuEvent(QContextMenuEvent *e)。
显示由createStandardContextMenu() 创建的标准上下文菜单。
若不希望文本编辑框具有上下文菜单,可将其contextMenuPolicy 属性设置为Qt::NoContextMenu 。若需自定义上下文菜单,请重写此函数。若需扩展标准上下文菜单,请重写此函数,调用createStandardContextMenu()并扩展返回的菜单。
有关该事件的信息通过event 对象传递。
void MyQPlainTextEdit::contextMenuEvent(QContextMenuEvent *event)
{
QMenu *menu = createStandardContextMenu();
menu->addAction(tr("My Menu Item"));
//...
menu->exec(event->globalPos());
delete menu;
}[slot] void QPlainTextEdit::copy()
将选中的任何文本复制到剪贴板。
另请参阅 copyAvailable()。
[signal] void QPlainTextEdit::copyAvailable(bool yes)
当在文本编辑框中选中或取消选中文本时,会发出此信号。
当选中文本时,该信号将被触发,且yes 的值为true。如果未选中文本,或者所选文本被取消选择,该信号将被触发,且yes 的值为false。
如果yes 为true,则可使用copy()将选定内容复制到剪贴板。如果yes 为false,则copy()不执行任何操作。
另请参阅 selectionChanged()。
[virtual protected] QMimeData *QPlainTextEdit::createMimeDataFromSelection() const
该函数返回一个新的 MIME 数据对象,用于表示文本编辑器当前选区的内容。当需要将选区封装到一个新的 `QMimeData ` 对象中时,会调用此函数;例如,在开始拖放操作时,或者将数据复制到剪贴板时。
如果您重写此函数,请注意,返回的QMimeData 对象的所有权将传递给调用方。可通过textCursor()函数获取选区内容。
QMenu *QPlainTextEdit::createStandardContextMenu()
该函数用于创建标准上下文菜单,当用户在文本编辑框上单击鼠标右键时,该菜单会显示出来。该函数由默认的contextMenuEvent()处理程序调用。弹出菜单的所有权将转移给调用方。
我们建议您改用 createStandardContextMenu(QPoint) 版本,该版本将启用与用户点击位置相关的操作。
QMenu *QPlainTextEdit::createStandardContextMenu(const QPoint &position)
该函数用于创建标准上下文菜单,当用户在文本编辑框上单击鼠标右键时,该菜单会显示出来。该函数由默认的contextMenuEvent()处理程序调用,并接收鼠标单击位置的position (以文档坐标系表示)。这使得可以实现根据用户单击位置而变化的操作。弹出菜单的所有权将转移给调用方。
QTextCharFormat QPlainTextEdit::currentCharFormat() const
返回插入新文本时使用的字符格式。
另请参阅 setCurrentCharFormat()。
QTextCursor QPlainTextEdit::cursorForPosition(const QPoint &pos) const
返回位于坐标pos (视口坐标系)处的QTextCursor 。
[signal] void QPlainTextEdit::cursorPositionChanged()
每当光标位置发生变化时,都会发出此信号。
QRect QPlainTextEdit::cursorRect() const
返回一个矩形(以视口坐标系为基准),该矩形包含文本编辑框的光标。
QRect QPlainTextEdit::cursorRect(const QTextCursor &cursor) const
返回一个矩形(以视口坐标为单位),该矩形包含cursor 。
[slot] void QPlainTextEdit::cut()
将选中的文本复制到剪贴板,并从文本编辑框中删除该文本。
如果没有选中的文本,则不执行任何操作。
QTextDocument *QPlainTextEdit::document() const
返回指向底层文档的指针。
另请参阅 setDocument()。
[override virtual protected] void QPlainTextEdit::dragEnterEvent(QDragEnterEvent *e)
重写了:QAbstractScrollArea::dragEnterEvent(QDragEnterEvent *event)。
[override virtual protected] void QPlainTextEdit::dragLeaveEvent(QDragLeaveEvent *e)
重写了:QAbstractScrollArea::dragLeaveEvent(QDragLeaveEvent *event)。
[override virtual protected] void QPlainTextEdit::dragMoveEvent(QDragMoveEvent *e)
重写了:QAbstractScrollArea::dragMoveEvent(QDragMoveEvent *event)。
[override virtual protected] void QPlainTextEdit::dropEvent(QDropEvent *e)
重写了:QAbstractScrollArea::dropEvent(QDropEvent *event)。
void QPlainTextEdit::ensureCursorVisible()
确保光标可见,必要时滚动文本编辑框。
另请参阅 centerCursor() 和centerOnScroll 。
QList<QTextEdit::ExtraSelection> QPlainTextEdit::extraSelections() const
返回先前设置的额外选项。
另请参阅 setExtraSelections()。
bool QPlainTextEdit::find(const QString &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags())
使用给定的options 查找字符串exp 的下一次出现位置。如果找到了exp ,则返回true 并使光标选中该匹配项;否则返回false 。
bool QPlainTextEdit::find(const QRegularExpression &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags())
使用给定的options ,查找与正则表达式exp 匹配的下一个出现位置。
若找到匹配项,则返回true 并将光标移动至该匹配项;否则返回false 。
警告:出于 历史原因,exp 上设置的大小写敏感选项将被忽略。取而代之的是,将使用options 来确定搜索是否区分大小写。
这是一个重载函数。
[protected] QTextBlock QPlainTextEdit::firstVisibleBlock() const
返回第一个可见的区块。
另请参阅 blockBoundingRect()。
[override virtual protected] void QPlainTextEdit::focusInEvent(QFocusEvent *e)
重写了:QWidget::focusInEvent(QFocusEvent *event)。
[override virtual protected] bool QPlainTextEdit::focusNextPrevChild(bool next)
重新实现了:QWidget::focusNextPrevChild (bool next)。
[override virtual protected] void QPlainTextEdit::focusOutEvent(QFocusEvent *e)
重写了:QWidget::focusOutEvent(QFocusEvent *event)。
[protected] QAbstractTextDocumentLayout::PaintContext QPlainTextEdit::getPaintContext() const
返回viewport()的绘制上下文,仅在重写paintEvent()时有用。
[override virtual protected] void QPlainTextEdit::inputMethodEvent(QInputMethodEvent *e)
重写了:QWidget::inputMethodEvent(QInputMethodEvent *event)。
[override virtual] QVariant QPlainTextEdit::inputMethodQuery(Qt::InputMethodQuery property) const
重写了:QWidget::inputMethodQuery (Qt::InputMethodQuery query)const。
[virtual protected] void QPlainTextEdit::insertFromMimeData(const QMimeData *source)
该函数将由source 指定的MIME数据对象的内容插入到文本编辑框中当前光标位置处。每当通过剪贴板粘贴操作插入文本,或者文本编辑框接受拖放操作的数据时,都会调用该函数。
[slot] void QPlainTextEdit::insertPlainText(const QString &text)
一个便捷插槽,用于将text 插入到当前光标位置。
这相当于
edit->textCursor().insertText(text);[override virtual protected] void QPlainTextEdit::keyPressEvent(QKeyEvent *e)
重写了:QAbstractScrollArea::keyPressEvent(QKeyEvent *e)。
[override virtual protected] void QPlainTextEdit::keyReleaseEvent(QKeyEvent *e)
重写了:QWidget::keyReleaseEvent(QKeyEvent *event)。
[virtual] QVariant QPlainTextEdit::loadResource(int type, const QUrl &name)
加载由给定的 `type ` 和 `name` 指定的资源。
该函数是QTextDocument::loadResource() 的扩展。
另请参阅 QTextDocument::loadResource()。
void QPlainTextEdit::mergeCurrentCharFormat(const QTextCharFormat &modifier)
通过对编辑器的光标调用QTextCursor::mergeCharFormat ,将modifier 中指定的属性合并到当前字符格式中。如果编辑器中有选区,则modifier 的属性将直接应用于该选区。
另请参阅 QTextCursor::mergeCharFormat()。
[signal] void QPlainTextEdit::modificationChanged(bool changed)
每当文档内容发生影响修改状态的变化时,都会触发此信号。如果changed 为true,则表示文档已被修改;否则为false。
例如,在文档上调用 setModified(false) 方法,随后插入文本,将触发该信号的发射。若撤销该操作,使文档恢复到原始的未修改状态,该信号将再次被触发。
[override virtual protected] void QPlainTextEdit::mouseDoubleClickEvent(QMouseEvent *e)
重写了:QAbstractScrollArea::mouseDoubleClickEvent(QMouseEvent *e)。
[override virtual protected] void QPlainTextEdit::mouseMoveEvent(QMouseEvent *e)
重写了:QAbstractScrollArea::mouseMoveEvent(QMouseEvent *e)。
[override virtual protected] void QPlainTextEdit::mousePressEvent(QMouseEvent *e)
重写了:QAbstractScrollArea::mousePressEvent(QMouseEvent *e)。
[override virtual protected] void QPlainTextEdit::mouseReleaseEvent(QMouseEvent *e)
重写了:QAbstractScrollArea::mouseReleaseEvent(QMouseEvent *e)。
void QPlainTextEdit::moveCursor(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor)
通过执行给定的operation 来移动光标。
如果mode 的值为QTextCursor::KeepAnchor ,则光标会选中其移动经过的文本。这与用户按住Shift键并使用方向键移动光标时所产生的效果相同。
另请参阅 QTextCursor::movePosition()。
[override virtual protected] void QPlainTextEdit::paintEvent(QPaintEvent *e)
重写了:QAbstractScrollArea::paintEvent(QPaintEvent *event)。
[slot] void QPlainTextEdit::paste()
将剪贴板中的文本粘贴到文本编辑框中,粘贴位置为当前光标所在处。
如果剪贴板中没有文本,则不会执行任何操作。
若要更改此函数的行为,即修改QPlainTextEdit 可粘贴的内容及其粘贴方式,请重写虚拟函数canInsertFromMimeData()和insertFromMimeData()。
void QPlainTextEdit::print(QPagedPaintDevice *printer) const
一个便捷函数,用于将文本编辑器的文档打印到指定的printer 上。这相当于直接调用文档的print方法,不同之处在于该函数还支持将QPrinter::Selection用作打印范围。
另请参阅 QTextDocument::print()。
[slot] void QPlainTextEdit::redo()
重做上一次操作。
如果没有要重做的操作,即撤销/重做历史记录中没有重做步骤,则不会发生任何操作。
另请参阅 undo()。
[signal] void QPlainTextEdit::redoAvailable(bool available)
每当重做操作可用(available 为真)或不可用(available 为假)时,都会触发此信号。
[override virtual protected] void QPlainTextEdit::resizeEvent(QResizeEvent *e)
重写了:QAbstractScrollArea::resizeEvent(QResizeEvent *event)。
[override virtual protected] void QPlainTextEdit::scrollContentsBy(int dx, int dy)
重新实现了:QAbstractScrollArea::scrollContentsBy(int dx, int dy)。
[slot] void QPlainTextEdit::selectAll()
选中所有文本。
另请参阅 copy()、cut() 和textCursor()。
[signal] void QPlainTextEdit::selectionChanged()
每当选择内容发生变化时,都会发出此信号。
另请参阅 copyAvailable()。
void QPlainTextEdit::setCurrentCharFormat(const QTextCharFormat &format)
通过在编辑器的光标上调用QTextCursor::setCharFormat(),设置向format 插入新文本时使用的字符格式。如果编辑器中有选区,则该字符格式将直接应用于选区。
另请参阅 ` currentCharFormat()`。
void QPlainTextEdit::setDocument(QTextDocument *document)
将document 设为文本编辑器的新文档。
所提供文档的父文档QObject 仍为该对象的所有者。如果当前文档是文本编辑器的子文档,则将其删除。
该文档必须具有继承自QPlainTextDocumentLayout 的文档布局(参见QTextDocument::setDocumentLayout())。
另请参阅 document()。
void QPlainTextEdit::setExtraSelections(const QList<QTextEdit::ExtraSelection> &selections)
该函数允许暂时用指定的颜色(通过selections 指定)标记文档中的某些区域。例如,在编程编辑器中,这可用于将整行文本标记为指定的背景色,以指示断点的存在。
另请参阅 QTextEdit::ExtraSelection 和extraSelections()。
[slot] void QPlainTextEdit::setPlainText(const QString &text)
将文本编辑框中的内容更改为字符串text 。此前输入的任何内容都将被清除。
text 被解释为纯文本。
注:
- 撤销/重做历史记录也将被清除。
- currentCharFormat() 将被重置,除非textCursor() 已位于文档开头。
注意: 这是属性plainText 的设置 函数。
另请参阅 toPlainText()。
void QPlainTextEdit::setTextCursor(const QTextCursor &cursor)
设置可见的cursor 。
另请参阅 textCursor()。
[override virtual protected] void QPlainTextEdit::showEvent(QShowEvent *)
重写了:QWidget::showEvent(QShowEvent *event)。
[signal] void QPlainTextEdit::textChanged()
每当文档内容发生变化时,都会触发此信号;例如,插入或删除文本,或者应用格式时。
注意: 这是属性plainText的通知器 信号。
QTextCursor QPlainTextEdit::textCursor() const
返回一个表示当前可见光标的QTextCursor 的副本。请注意,对返回的光标所做的更改不会影响QPlainTextEdit 的光标;请使用setTextCursor()来更新可见光标。
另请参阅 setTextCursor()。
QString QPlainTextEdit::toPlainText() const
返回文本编辑框中的文本内容(以纯文本形式)。
注意: 这是属性 `plainText` 的获取器 函数。
另请参阅 QPlainTextEdit::setPlainText()。
[slot] void QPlainTextEdit::undo()
撤销上一次操作。
如果没有可撤销的操作,即撤销/重做历史记录中没有相应的撤销步骤,则不会发生任何变化。
另请参阅 redo()。
[signal] void QPlainTextEdit::undoAvailable(bool available)
每当撤销操作可用(available 为真)或不可用(available 为假)时,都会发出此信号。
[signal] void QPlainTextEdit::updateRequest(const QRect &rect, int dy)
当文本文档需要更新指定的rect 时,会发出此信号。如果文本被水平滚动,rect 将覆盖整个视口区域。如果文本被垂直滚动,dy 将携带视口滚动的像素数量。
该信号的目的是支持纯文本编辑子类中的额外控件,例如显示行号、断点或其他附加信息。
[override virtual protected] void QPlainTextEdit::wheelEvent(QWheelEvent *e)
重写了:QAbstractScrollArea::wheelEvent(QWheelEvent *e)。
[slot] void QPlainTextEdit::zoomIn(int range = 1)
通过将基础字号增大range 点,并重新计算所有字号以适应新大小,从而放大文本。此操作不会改变任何图片的大小。
另请参阅 zoomOut()。
[slot] void QPlainTextEdit::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.