2026/8/22 10:14:10

Qt:QLineEdit QTextEdit QPlainTextEdit的区别

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