50

QTextEdit和之间有什么区别QPlainTextEdit,为什么使用一个而不是另一个?

我正在编写一个文本编辑器作为学习 Qt5 的练习,现在我想知道是否QTextEdit使用QPlainTextEdit. 到目前为止,我只发现您可以在 中显示图像QTextEdit,但除此之外它们看起来与我有些相同。我的文本编辑器应该支持一些基本的语法突出显示(可能使用textChanged()信号),但这几乎就要求而言。

谷歌搜索“QTextEdit vs QPlainTextEdit”“QTextEdit 与 QPlainTextEdit 相比”并没有给我任何可以比较这两个类的体面结果。

4

1 回答 1

45

来自Qt 的文档

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

QPlainText 使用与 非常相同的技术和概念 QTextEdit,但针对纯文本处理进行了优化。

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

后来:

与 QTextEdit 的区别

QPlainTextEdit是一个瘦类,通过使用QTextEditQTextDocument. 它的性能优势QTextEdit主要来自于使用QPlainTextDocumentLayout在文本文档上调用的不同且简化的文本布局(请参阅 参考资料QTextDocument::setDocumentLayout())。纯文本文档布局不支持表格或嵌入框架,并用逐行或逐段滚动方法替换像素精确高度计算。这使得处理大得多的文档成为可能,并且仍然可以在启用换行的情况下实时调整编辑器的大小。它还提供了一个快速的日志查看器(请参阅 参考资料setMaximumBlockCount())。

所以不同之处在于QPlainTextEdit它针对处理纯文本进行了优化,甚至可以用于非常大的纯文本文件。文本格式化的方式也更简单。

如果您打算只支持纯文本,那么QPlainTextEdit这是正确的选择。

于 2013-07-04T09:05:37.147 回答