1.前言
先纠正名称:
QLineEdit(单行输入框)
QTextEdit(富文本编辑器)
QPlainTextEdit(纯文本多行编辑器)
2.定位
控件 | 用途 | 文本类型 | 行数 |
QLineEdit | 单行简短输入:账号、密码、搜索框 | 纯文本 | 只能单行 |
QPlainTextEdit | 多行纯文本:日志、代码编辑器、命令输出 | 纯文本 only | 多行,无富文本 |
QTextEdit | 富文本编辑:带字体、颜色、图片、表格、html | 富文本(支持 HTML) | 多行 |
3特性
3.1QLineEdit
特点
·强制单行,回车默认不会换行;
·支持掩码输入、密码隐藏、输入校验;
·占用资源极小,适合短字符串;
·没有滚动区域(文本超出会横向滚动);
·信号:textChanged()、returnPressed()
限制
·不能换行、不能显示多行文本、不支持富文本。
适用场景:用户名、手机号、搜索栏、单行参数输入。
3.2QPlainTextEdit
特点
·多行纯文本,支持换行;
·不支持富文本、图片、HTML,只有普通文字;
·渲染性能远高于QTextEdit,大量日志输出首选;
·自带垂直滚动条;
·可以设置行号区域、只读日志模式;
·API:toPlainText()/setPlainText()
限制
·无法设置局部文字颜色、字体、插入图片。
适用场景:日志窗口、简易代码框、批量文本录入、命令输出。
3.3QTextEdit
特点
·富文本控件,原生支持 HTML 子集;
·可以:局部文字变色、字体大小、插入图片、表格、超链接;
·支持 setHtml() / toHtml(),也可以读写纯文本;
·支持文本选中样式、列表、对齐方式;
缺点
·性能开销更大,如果一次性加载上万行文本,卡顿明显;
·很多富文本相关接口调用复杂。
适用场景:聊天框、图文消息、带格式说明文档、富文本备注。
4关键接口区分
QLineEdit
setText() / text()QPlainTextEdit
setPlainText() / toPlainText() // 不要用 setText,虽然存在,但语义不推荐QTextEdit
setPlainText() / toPlainText() // 纯文本模式 setHtml() / toHtml() // 富文本模式 setText() 等价于 setPlainText()坑:如果你给 QTextEdit 使用 setHtml("<b>test</b>"),用 toPlainText() 拿到纯文字,toHtml() 拿到完整 html 源码。
5快速选型建议
① 只需要一行输入 → QLineEdit
② 多行、只需要纯文字、大量日志 / 代码 → QPlainTextEdit(优先)
③ 需要文字变色、图片、排版、图文混排 → QTextEdit
6补充常见误区
①不要用QTextEdit做日志窗口:大量刷新容易卡顿,优先QPlainTextEdit;
②QPlainTextEdit 不能显示彩色文字(原生),想要语法高亮需要自己重写 QSyntaxHighlighter;
③QLineEdit无法实现多行,想多行就不能选它;
④三者都可以设置 setReadOnly(true) 变为只读展示框。