Qt6.5类库详解:QPlainTextEdit
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编程),定期会分享一些技术开发经验、行业资讯、业界动态等。期待您的关注,一起交流学习进步。
#下载示例源码和开发工具,请进入公众号首页,点击(发消息)最下方的(资源下载)菜单即可获取。
喜欢本文章,记得点赞、分享、关注哦~
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!