QTextEdit与QPlainTextEdit的区别

56

QTextEditQPlainTextEdit有什么区别?为什么要使用其中之一?

我正在编写一个文本编辑器来学习Qt5,现在我想知道是使用QTextEdit还是QPlainTextEdit更好。 到目前为止,我只发现在QTextEdit中可以显示图片,但除此之外它们看起来差不多。 我的文本编辑器应该支持一些基本的语法高亮(可能使用textChanged()信号),但这几乎是唯一的要求。

搜索"QTextEdit vs QPlainTextEdit""QTextEdit compared to QPlainTextEdit"没有给我任何像样的结果来比较这两个类。

1个回答

50

来自QPlainTextEdit的文档

QPlainTextEdit是一个支持纯文本的高级查看器/编辑器。它经过优化,可以处理大型文档,并能快速响应用户输入。

QPlainText使用了与QTextEdit非常相似的技术和概念,但它专为处理纯文本进行了优化。

QPlainTextEdit按段落和字符工作。段落是一个格式化的字符串,它会自动换行以适应小部件的宽度。默认情况下,读取纯文本时,一个换行符表示一个段落。一个文档由零个或多个段落组成。段落之间由硬换行符分隔。每个段落中的每个字符都有自己的属性,例如字体和颜色。

QPlainTextEdit是一个轻量级的类,它使用了大部分与QTextEditQTextDocument背后的技术相同的技术进行实现。与QTextEdit相比,它的性能优势主要来自于在文本文档上使用了一种不同且简化的文本布局,称为QPlainTextDocumentLayout(参见QTextDocument::setDocumentLayout())。纯文本文档布局不支持表格和嵌入式框架,并且用逐行或逐段滚动的方式替代了像素精确的高度计算。这使得它能够处理更大的文档,并且在启用换行的情况下实时调整编辑器的大小。它还可以用作快速日志查看器(参见setMaximumBlockCount())。

因此,QPlainTextEdit的区别在于它针对处理纯文本进行了优化,甚至可以处理非常大的纯文本文件。此外,文本格式化的方式更加简单。

如果您计划仅支持纯文本,那么QPlainTextEdit是正确的选择。


4
我可以为 QPlainTextEdit 使用语法高亮吗? - Markus Meskanen
6
可以的。这个链接表明QPlainTextEdit支持语法高亮。 - Bakuriu
谢谢@Bakuriu,我真的不知道!我得在QOwnNotes中重新实现它。 - Patrizio Bekerle
一个简单的编辑器/IDE,哪个更好? - Ito

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接