1. 基本介绍
-
QTextEdit 是 Qt 中用于显示和编辑富文本(支持 HTML 子集)和纯文本的控件。
-
支持文本格式(字体、颜色、对齐)、列表、表格、图片插入等富文本功能。
-
底层通过 QTextDocument 管理内容,提供强大的文本处理能力。
2. 核心功能
-
文本操作:插入、删除、修改文本,支持撤销/重做。
-
格式控制:字体、字号、颜色、粗体/斜体/下划线、对齐方式等。
-
富文本支持:通过 HTML/CSS 渲染内容(如 粗体)。
-
光标操作:通过 QTextCursor 精细控制文本插入、选择和格式。
-
滚动与换行:自动换行、滚动条控制。
3. 常用方法
// 文本内容操作
setText("Hello World"); // 设置纯文本
append("New line"); // 追加文本
QString text = toPlainText();// 获取纯文本
QString html = toHtml(); // 获取 HTML 内容// 格式设置
setFontFamily("Arial"); // 设置字体
setFontPointSize(12); // 字号
setTextColor(Qt::red); // 文字颜色
setAlignment(Qt::AlignCenter); // 居中对齐// 光标操作
QTextCursor cursor = textCursor();
cursor.insertText("Inserted Text"); // 插入文本
cursor.insertImage("image.png"); // 插入图片// 查找与替换
find("searchText"); // 查找文本
find(“searchText”); // 查找文本
4. 关键信号
-
textChanged():文本内容变化时触发。
-
selectionChanged():选中文本变化时触发。
-
cursorPositionChanged():光标位置变化时触发。
5. 高级功能
-
语法高亮:继承 QSyntaxHighlighter 实现自定义高亮规则。
-
插入复杂对象:表格、列表、图片、超链接。
cursor.insertTable(2, 2); // 插入 2x2 表格
cursor.insertHtml("<a href='https://example.com'>Link</a>");
-
打印支持:通过 QTextDocument 导出为 PDF 或打印。
-
自定义样式:使用 CSS 样式表修改控件外观
setStyleSheet("QTextEdit { border: 2px solid gray; }");
6. 与 QPlainTextEdit 的区别
特性 | QTextEdit | QPlainTextEdit |
---|---|---|
文本类型 | 富文本 + 纯文本 | 纯文本 |
性能 | 适合中小规模文本 | 适合大规模文本(更高效) |
王格式支持五 | 支持字体、颜色、图片等 | 仅基础格式(如换行) |
使用场景 | 富文本编辑器、邮件客户端 | 日志显示、代码编辑器 |
7. 注意事项
-
性能:处理超长文本时优先考虑 QPlainTextEdit。
-
HTML 支持限制:并非所有 HTML 标签都有效(如 JavaScript)。
-
光标操作:通过 QTextCursor 实现复杂编辑(如选中多行)。
8. 简单示例
// 创建 QTextEdit 并设置基础属性
QTextEdit *edit = new QTextEdit;
edit->setPlainText("Initial Text");
edit->setFontUnderline(true);
edit->setLineWrapMode(QTextEdit::WidgetWidth); // 自动换行// 响应文本变化
connect(edit, &QTextEdit::textChanged, []() {qDebug() << "Text changed!";
});
9. 适用场景
-
需要富文本编辑的应用(如 Markdown 编辑器、邮件客户端)。
-
格式化文本展示(如报告生成、带样式的说明文档)。
- 通过掌握 QTextEdit 的核心功能和方法,可以实现复杂的文本编辑需求,同时注意在性能敏感场景下合理选择控件。