Qt6.5类库详解:QPlainTextEdit

发布时间:2024年01月09日

1 QPlainTextEdit介绍

QPlainTextEdit是一个功能强大、易于使用的纯文本编辑器/查看器,QPlainTextEdit使用与QTextEdit相同的技术和概念,但是为纯文本的处理进行了优化,所以适应于处理大型纯文本文档。

  • QPlainTextEdit的主要功能和特点:

纯文本编辑:QPlainTextEdit是一个纯文本编辑器,它不包含任何富文本编辑功能,如字体、颜色、大小等。

文本输入和编辑:用户可以使用键盘、鼠标或触摸屏在QPlainTextEdit中输入和编辑文本。

自动换行:可以根据窗口的宽度自动调整文本的排版。

查找和替换:可以通过输入关键词或正则表达式来查找和替换文本中的内容。

鼠标选中和复制:可以使用鼠标或触摸屏来选中和复制文本。

剪切和粘贴:可以将选中的文本剪切或复制到剪贴板中,然后粘贴到其他应用程序或文本编辑器中。

撤销和重做:可以撤销或重做之前的编辑操作。

语法高亮显示:可以根据代码的语法规则对文本进行高亮显示,方便用户阅读和理解代码。

自定义样式:可以根据自己的喜好设置文本的字体、颜色、大小等样式。

多语言支持:可以根据用户的语言偏好自动选择相应的语言显示。

  • 如何使用QPlainTextEdit:

头文件:#include <QPlainTextEdit>

cmake:find_package(Qt6 REQUIRED COMPONENTS Widgets)

target_link_libraries(mytarget PRIVATE Qt6::Widgets)

qmake:QT += widgets

继承于:QAbstractScrollArea

2 QPlainTextEdit默认风格显示例子

#include <QPlainTextEdit>
// 创建 QPlainTextEdit 控件
m_pPlainTextEdit = new QPlainTextEdit(this);
m_pPlainTextEdit->setGeometry(20, 20, 280, 128);
// 显示一段文本。
m_pPlainTextEdit->setPlainText("这是一段 QPlainTextEdit 示例文本。");

3 QPlainTextEdit信号

// 当显示文本改变时,发射该信号。
void textChanged(const QString &text)
// 当允许撤销操作状态改变时,发射该信号;true表示允许撤销。
void undoAvailable(bool b)
// 当允许重做操作状态改变时,发射该信号;true表示允许重做。
void redoAvailable(bool b)
// 当允许复制操作状态改变时,发射该信号;true表示允许复制。
void copyAvailable(bool b)
// 当选择文本改变时,发射该信号。
void selectionChanged()
// 当前光标位置改变时,发射该信号。
void cursorPositionChanged()

// 当文档某个区域需要更新时,发射该信号。
void updateRequest(const QRect &rect, int dy)
// 当文档内容块数量改变时,发射该信号。
void blockCountChanged(int newBlockCount)
// 当文档内容修改状态改变时,发射该信号;true表示文档被修改。
void modificationChanged(bool b)

4 QPlainTextEdit属性和状态

  • placeholderText占位符文本:

占位符文本一般用于在用户未输入任何内容时显示一些提示信息。

// 访问函数
QString placeholderText() const
void setPlaceholderText(const QString &placeholderText)

/**** 例子: ****/
m_pPlainTextEdit->setPlaceholderText("请输入备注说明。");

  • isReadOnly是否只读模式:

false:文本编辑器。(默认)

true:文本查看器。

// 访问函数
bool isReadOnly() const
void setReadOnly(bool b)

/**** 例子 ****/
m_pPlainTextEdit->setReadOnly(true);
  • textInteractionFlags文本交互标识:

textInteractionFlags属性用来指定QPlainTextEdit控件如何与用户输入交互。

Qt::TextInteractionFlags宏定义如下:

Qt::NoTextInteraction 0 表示没有任何文本交互。

Qt::TextSelectableByMouse 1 表示可以通过鼠标选择文本。

Qt::TextSelectableByKeyboard 2 表示可以通过键盘选择文本。

Qt::LinksAccessibleByMouse 4 表示可以通过鼠标点击来访问链接。

Qt::LinksAccessibleByKeyboard 8 表示可以通过键盘来访问链接。

Qt::TextEditable 16 表示可以接受用户输入并编辑文本。

textInteractionFlags默认值跟QPlainTextEdit是否只读模式有关(isReadOnly为true)。

// 访问函数
void setTextInteractionFlags(Qt::TextInteractionFlags flags)
Qt::TextInteractionFlags textInteractionFlags() const

/**** 例子: ****/
m_pPlainTextEdit->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::LinksAccessibleByMouse | Qt::TextSelectableByKeyboard);
  • tabChangesFocus制表符(Tab)切换焦点:

false:按下Tab键在文本框输入制表符号。(默认)

true:按下Tab键切换文本框焦点。

// 访问函数
bool tabChangesFocus() const
void setTabChangesFocus(bool b)
  • tabStopDistance制表符停止间隔距离:

tabStopDistance用来设置在编辑框里面按下TAB键,插入制表符间隔距离多少像素。

默认80。

// 访问函数
qreal tabStopDistance() const
void setTabStopDistance(qreal distance)
  • isUndoRedoEnabled是否启用撤销重做:

true:启用撤销重做功能。(默认)

false:禁用撤销重做功能。

// 访问函数
bool isUndoRedoEnabled() const
void setUndoRedoEnabled(bool b)

/**** 例子: ****/
m_pPlainTextEdit->setUndoRedoEnabled(false);    // 设置禁用撤销重做功能。
  • maximumBlockCount最多文本内容块数量:

默认 0 没有限制。

// 访问函数
int maximumBlockCount() const
void setMaximumBlockCount(int maximum)
  • lineWrapMode换行模式:

lineWrapMode用于指定QPlainTextEdit编辑器中的换行模式。

QPlainTextEdit::LineWrapMode宏定义如下:

QPlainTextEdit::NoWrap 0 不会自动换行,会一直显示到文本编辑器的末尾。

QPlainTextEdit::WidgetWidth 1 会在文本编辑器窗口宽度允许的范围内自动换行。(默认)

// 访问函数
QPlainTextEdit::LineWrapMode lineWrapMode() const
void setLineWrapMode(QPlainTextEdit::LineWrapMode mode)
  • wordWrapMode换行模式:

wordWrapMode用于指定文本的换行模式。

QTextOption::WrapMode宏定义如下:

QTextOption::NoWrap 0 文本不会自动换行,会一直显示到文本编辑器的末尾。

QTextOption::WordWrap 1 文本会在单词边界处自动换行。

QTextOption::ManualWrap 2 与QTextOption::NoWrap相同,文本不会自动换行。

QTextOption::WrapAnywhere 3 文本可以在一行上的任何位置自动换行。

QTextOption::WrapAtWordBoundaryOrAnywhere 4 如果可能,文本会在单词边界处自动换行;否则,会在行的任何适当位置自动换行。(默认)

// 访问函数
QTextOption::WrapMode wordWrapMode() const
void setWordWrapMode(QTextOption::WrapMode policy)

/**** 例子: ****/
m_pPlainTextEdit->setWordWrapMode(QTextOption::WordWrap);    // 设置按词换行。
  • backgroundVisible是否背景可视:

true:显示文本背景颜色,一般是白色。

false:透明背景。(默认)

// 访问函数
void setBackgroundVisible(bool visible)
bool backgroundVisible() const
  • centerOnScroll滚动调整到中心:

centerOnScroll用于设置文本编辑器在滚动时的行为。

true:当用户滚动文本编辑器时,文本编辑器会自动将滚动位置调整到中心位置。

false:滚动位置不会自动调整。(默认)

// 访问函数
void setCenterOnScroll(bool enabled)
bool centerOnScroll() const
  • overwriteMode是否覆盖模式:

true:覆盖模式;当用户在文本编辑器中输入文本时,新的文本将覆盖旧的文本。

false:插入模式;新的文本将附加到旧的文本的末尾。(默认)

// 访问函数
bool overwriteMode() const
void setOverwriteMode(bool overwrite)
  • cursorWidth光标宽度:

默认1像素。

// 访问函数
int cursorWidth() const
void setCursorWidth(int width)

5 QPlainTextEdit右键菜单

  • 默认右键菜单效果:

6 QPlanTextEdit文本字符格式操作

  • QTextCharFormat文本字符格式类介绍:

QTextCharFormat是Qt中用于表示文本字符格式的类。这个类的主要功能是用于设置和管理文本的字体、颜色、样式和其他属性。

以下是QTextCharFormat类的一些常用属性和方法:

setFont(const QFont &font):设置字体。

setFontFamily(const QString &family):设置字体家族。

setFontPointSize(qreal size):设置字体大小。

setFontWeight(int weight):设置字体粗细。

setFontItalic(bool italic):设置字体是否倾斜。

setFontUnderline(bool underline):设置字体是否带下划线。

setFontStrikeOut(bool strikeOut):设置字体是否带删除线。

setForeground(const QBrush &brush):设置前景色(文本颜色)。

setBackground(const QBrush &brush):设置背景色。

setTextOutline(const QPen &pen):设置文本描边样式。

setUnderlineColor(const QColor &color):设置下划线颜色。

setVerticalAlignment(Qt::Alignment alignment):设置文本垂直对齐方式。

setAnchor(bool anchor):设置是否为锚点。

setAnchorHref(const QString &href):设置锚点链接。

setAnchorName(const QString &name):设置锚点名称。

setAnchorNames(const QStringList &names):设置锚点名称。

setToolTip(const QString &toolTip):设置工具提示。

setFontCapitalization(QFont::Capitalization caps):设置字母大小写。

setFontLetterSpacing(qreal spacing):设置字母间距。

  • QPlainTextEdit文本字符格式函数:

// 设置当前光标(包括选择文本)的字符格式。
void setCurrentCharFormat(const QTextCharFormat &format)
// 返回当前光标(包括选择文本)的字符格式。
QTextCharFormat currentCharFormat() const
// 合并当前光标(包括选择文本)的字符格式。
void mergeCurrentCharFormat(const QTextCharFormat &modifier)
  • QPlainTextEdit文本字符格式显示示例:

以下是一个示例代码,演示如何使用QPlainTextEdit和setCurrentCharFormat()函数来设置当前选中文本的字符格式:

#include <QPlainTextEdit>
// 创建 QPlainTextEdit 控件
m_pPlainTextEdit = new QPlainTextEdit(this);
m_pPlainTextEdit->setGeometry(20, 20, 280, 128);

// 创建一个新的字符格式。
QTextCharFormat charFormat;
charFormat.setFontFamilies(QStringList() << "Arial");
charFormat.setFontPointSize(12);
charFormat.setForeground(QBrush(Qt::red));
charFormat.setFontWeight(QFont::Bold);

// 将字符格式应用到当前光标所指向的文本上。
m_pPlainTextEdit->setCurrentCharFormat(charFormat);

// 显示一段文本。
m_pPlainTextEdit->setPlainText("这是一段 QPlainTextEdit 示例文本。");

7 QPlainTextEdit文本操作

  • 文本内容管理:

// 返回文本。
QString toPlainText() const
// 设置文本。
void setPlainText(const QString &text)
// 在光标位置插入文本。
void insertPlainText(const QString &text)
// 在文档结尾添加文本。
void appendPlainText(const QString &text)
// 在文档末尾添加HTML格式文本。
void appendHtml(const QString &html)
  • 剪贴板快捷操作:

// 剪切选择文本内容到剪贴板。
void cut()
// 复制选择文本内容到剪贴板。
void copy()
// 返回是否允许粘贴剪贴板文本内容到光标位置。
bool canPaste() const
// 插入剪贴板文本内容到当前光标位置,同时删除选择文本。
void paste()
  • 放大缩小操作:

zoomIn放大、zoomOut缩小函数,取决于QPlainTextEdit字体大小和其他属性设置。

// 访问函数
void zoomIn(int range = 1)
void zoomOut(int range = 1)
  • QPlainTextEdit快捷操作:

// 清空文本。
void clear()
// 选择全部文本。
void selectAll()
// 撤销上一次操作。
void undo()
// 重做上一次操作。
void redo()

-【End】-

哈喽,大家好!我是喜欢coding的小二,一枚“靓仔又不掉头发”的C++开发大头兵;欢迎围观公众号(20YC编程),定期会分享一些技术开发经验、行业资讯、业界动态等。期待您的关注,一起交流学习进步。

#下载示例源码和开发工具,请进入公众号首页,点击(发消息)最下方的(资源下载)菜单即可获取。

喜欢本文章,记得点赞、分享、关注哦~

文章来源:https://blog.csdn.net/yanghz/article/details/135316533
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。