01 QTextEdit介绍
QTextEdit是一个文本编辑控件类,用于编辑和显示纯文本和富文本。
-
QTextEdit的主要功能和特点:
富文本编辑与显示:QTextEdit支持富文本格式,可以显示和编辑带有各种字体、颜色和文字格式的文本。
处理大型文档:QTextEdit经过优化,可以处理大型文档并快速响应用户输入,适用于编辑长篇文章或大量文本。
HTML和Markdown支持:QTextEdit支持使用HTML风格的标签或Markdown格式的富文本格式化。
段落和字符级别控制:QTextEdit文本是基于段落和字符进行控制的,每个段落和字符都可以有自己的格式属性,如字体和颜色等。
显示图像、列表和表格:QTextEdit还可以显示图像、列表和表格,丰富文本编辑内容。
提供占位文本提示:QTextEdit支持设置占位文本,当编辑框内无内容时,可以显示预设的提示信息。
QTextEdit是一个功能丰富、性能优化的文本编辑控件,适用于各种需要处理文本的场合。
-
如何使用QTextEdit:
头文件:#include <QTextEdit>
cmake:find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake:QT += widgets
继承于:QAbstractScrollArea
02 QTextEdit默认风格显示例子
#include <QTextEdit>
// 创建 QTextEdit 控件。
m_pTextEdit = new QTextEdit(this);
m_pTextEdit->setGeometry(30, 30, 380, 128);
m_pTextEdit->setPlainText("这是一段 QTextEdit 示例文本。");
03 QTextEdit信号
// 当显示文本改变时,发射该信号。
void textChanged()
// 当允许撤销操作状态改变时,发射该信号;true表示允许撤销。
void undoAvailable(bool b)
// 当允许重做操作状态改变时,发射该信号;true表示允许重做。
void redoAvailable(bool b)
// 当前文本字符格式改变时,发射该信号。
void currentCharFormatChanged(const QTextCharFormat &format)
// 当允许复制操作状态改变时,发射该信号;true表示允许复制。
void copyAvailable(bool b)
// 当选择文本改变时,发射该信号。
void selectionChanged()
// 当前光标位置改变时,发射该信号。
void cursorPositionChanged()
04 QTextEdit属性和状态
-
placeholderText占位符文本:
占位符文本一般用于在用户未输入任何内容时显示一些提示信息。
// 访问函数。
QString placeholderText() const
void setPlaceholderText(const QString &placeholderText)
/**** 例子: ****/
m_pTextEdit->setPlaceholderText("请输入备注说明。");
-
isReadOnly是否只读模式:
false:编辑模式;文本编辑器。(默认)
true:只读模式;文本查看器。
// 访问函数。
bool isReadOnly() const
void setReadOnly(bool b)
/**** 例子 ****/
m_pTextEdit->setReadOnly(true);
-
textInteractionFlags文本交互标识:
textInteractionFlags属性用来指定QTextEdit控件如何与用户输入交互。
Qt::TextInteractionFlags宏定义如下:
Qt::NoTextInteraction 0 表示没有任何文本交互。
Qt::TextSelectableByMouse 1 表示可以通过鼠标选择文本。
Qt::TextSelectableByKeyboard 2 表示可以通过键盘选择文本。
Qt::LinksAccessibleByMouse 4 表示可以通过鼠标点击来访问链接。
Qt::LinksAccessibleByKeyboard 8 表示可以通过键盘来访问链接。
Qt::TextEditable 16 表示可以接受用户输入并编辑文本。
textInteractionFlags默认值跟QTextEdit是否只读模式有关(isReadOnly为true)。
// 访问函数。
void setTextInteractionFlags(Qt::TextInteractionFlags flags)
Qt::TextInteractionFlags textInteractionFlags() const
/**** 例子: ****/
m_pTextEdit->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::LinksAccessibleByMouse | Qt::TextSelectableByKeyboard);
-
autoFormatting自动格式化属性:
autoFormatting属性用于控制QTextEdit文本编辑自动格式化功能。
QTextEdit::AutoFormatting宏定义如下:
QTextEdit::AutoNone 禁用格式化功能。(默认)
QTextEdit::AutoBulletList 自动格式化项目符号列表功能。
QTextEdit::AutoAll 自动格式化所有。
// 访问函数。
QTextEdit::AutoFormatting autoFormatting() const
void setAutoFormatting(QTextEdit::AutoFormatting features)
-
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_pTextEdit->setUndoRedoEnabled(false); // 设置禁用撤销重做功能。
-
lineWrapColumnOrWidth换行列数或宽度:
0:表示不处理。(默认)
>0:表示文本超过行的列数或宽度自动换行。
// 访问函数。
int lineWrapColumnOrWidth() const
void setLineWrapColumnOrWidth(int w)
/**** 例子: ****/
m_pTextEdit->setLineWrapColumnOrWidth(80); // 设置每行最多显示80个字符。
-
lineWrapMode换行模式:
lineWrapMode用于指定QTextEdit编辑器中的换行模式。
QTextEdit::LineWrapMode宏定义如下:
QTextEdit::NoWrap 0 不会自动换行,会一直显示到文本编辑器的末尾。
QTextEdit::WidgetWidth 1 会在文本编辑器窗口宽度允许的范围内自动换行。(默认)
QTextEdit::FixedPixelWidth 2 配合lineWrapColumnOrWidth属性自动换行。
QTextEdit::FixedColumnWidth 3 配合lineWrapColumnOrWidth属性自动换行。
// 访问函数。
QTextEdit::LineWrapMode lineWrapMode() const
void setLineWrapMode(QTextEdit::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_pTextEdit->setWordWrapMode(QTextOption::WordWrap); // 设置按词换行。
-
overwriteMode是否覆盖模式:
true:覆盖模式;当用户在文本编辑器中输入文本时,新的文本将覆盖旧的文本。
false:插入模式;新的文本将附加到旧的文本的末尾。(默认)
// 访问函数
bool overwriteMode() const
void setOverwriteMode(bool overwrite)
-
cursorWidth光标宽度:
默认1像素。
// 访问函数。
int cursorWidth() const
void setCursorWidth(int width)
-
acceptRichText是否接受富文本:
true:允许输入和显示富文本。包含不同样式和格式的文本,例如粗体、斜体、下划线、颜色等。(默认)
false:只允许输入纯文本。
// 访问函数。
bool acceptRichText() const
void setAcceptRichText(bool accept)
05 QTextEdit右键菜单
- 默认右键菜单效果:
06 QTextEdit字符格式化属性
- fontPointSize字体大小:
// 访问函数。
qreal fontPointSize() const
void setFontPointSize(qreal s)
- fontFamily字体家族:
// 访问函数。
QString fontFamily() const
void setFontFamily(const QString &fontFamily)
- fontWeight字体粗细:
// 访问函数。
int fontWeight() const
void setFontWeight(int w)
- fontUnderline下划线:
// 访问函数。
bool fontUnderline() const
void setFontUnderline(bool b)
- fontItalic斜体:
// 访问函数。
bool fontItalic() const
void setFontItalic(bool b)
- textColor文本颜色:
// 访问函数。
QColor textColor() const
void setTextColor(const QColor &c)
/**** 例子: ****/
m_pTextEdit->setTextColor(QColor(255, 0, 0)); // 设置文本显示为红色。
- textBackgroundColor背景颜色:
// 访问函数
QColor textBackgroundColor() const
void setTextBackgroundColor(const QColor &c)
- currentFont当前字体:
// 访问函数。
QFont currentFont() const
void setCurrentFont(const QFont &f)
- alignment文本对齐方式:
// 访问函数。
Qt::Alignment alignment() const
void setAlignment(Qt::Alignment a)
/**** 例子: ****/
m_text_edit->setAlignment(Qt::AlignLeft|Qt::AlignVCenter); // 设置文本靠左,并且垂直居中显示。
07 QTextEdit文本字符格式操作
-
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):设置字母间距。
-
QTextEdit文本字符格式函数:
// 设置当前光标(包括选择文本)的字符格式。
void setCurrentCharFormat(const QTextCharFormat &format)
// 返回当前光标(包括选择文本)的字符格式。
QTextCharFormat currentCharFormat() const
// 合并当前光标(包括选择文本)的字符格式。
void mergeCurrentCharFormat(const QTextCharFormat &modifier)
-
QTextEdit文本字符格式显示示例:
以下是一个示例代码,演示如何使用QTextEdit和setCurrentCharFormat()函数来设置当前选中文本的字符格式:
#include <QTextEdit>
// 创建 QTextEdit 控件。
m_pTextEdit = new QTextEdit(this);
m_pTextEdit->setGeometry(30, 30, 380, 128);
// 创建一个新的字符格式。
QTextCharFormat charFormat;
charFormat.setFontFamilies(QStringList() << "Arial");
charFormat.setFontPointSize(12);
charFormat.setForeground(QBrush(Qt::green));
charFormat.setFontWeight(QFont::Bold);
// 将字符格式应用到当前光标所指向的文本上。
m_pTextEdit->setCurrentCharFormat(charFormat);
// 显示一段文本。
m_pTextEdit->setPlainText("这是一段 QTextEdit 示例文本。");
08 QTextEdit文本操作
-
文本内容管理:
// 返回文本。
QString toPlainText() const
// 返回HTML文本。
QString toHtml() const
// 设置文本。
void setPlainText(const QString &text)
// 设置HTML文本。
void setHtml(const QString &text)
// 设置文本。(支持纯文本或HTML文本)
void setText(const QString &text)
// 在光标位置插入文本。
void insertPlainText(const QString &text)
// 在光标位置插入HTML文本。
void insertHtml(const QString &text)
// 在文档结尾添加文本。
void append(const QString &text)
-
剪贴板快捷操作:
// 剪切选择文本内容到剪贴板。
void cut()
// 复制选择文本内容到剪贴板。
void copy()
// 返回是否允许粘贴剪贴板文本内容到光标位置。
bool canPaste() const
// 插入剪贴板文本内容到当前光标位置,同时删除选择文本。
void paste()
-
放大缩小操作:
zoomIn放大、zoomOut缩小函数,取决于QTextEdit字体大小和其他属性设置。
// 访问函数
void zoomIn(int range = 1)
void zoomOut(int range = 1)
-
QTextEdit快捷操作函数
// 清空文本。
void clear()
// 选择全部文本。
void selectAll()
// 撤销上一次操作。
void undo()
// 重做上一次操作。
void redo()
09 附录:完整源码
关注公众号下载本示例完整源码(20_QTextEdit_example.zip)。
-【End】-
#想了解更多精彩内容,关注下方公众号,还有示例源码、开发工具免费下载。
喜欢本文章,记得点赞、分享、关注哦~