富文本处理、打印与模型视图编程
1. 打印文档
在处理文档打印时,使用QPainter进行打印虽然比QTextDocument需要更多的细心和计算,但能让我们对输出实现完全的控制。
1.1 语法高亮
使用QSyntaxHighlighter为具有规则语法的纯文本(如源代码)提供语法高亮是相当直接的,处理多行结构也比较容易。不过,处理模糊和特殊情况(如引号内的引号、引号内的注释起始符号等)是最困难的部分。另一种选择是使用QScintilla编辑器。
1.2QTextEdit类
QTextEdit类功能强大且用途广泛,开箱即用,可以编辑纯文本和 HTML。创建QTextEdit子类来提供按键和上下文菜单事件处理程序,为用户提供基本的格式选项并不困难,并且这些技术可以轻松扩展,以提供菜单和工具栏,让用户可以添加、编辑和删除列表、表格和图像,还能在字符级别(如下划线、删除线)或段落级别(如左对齐、右对齐、居中对齐或两端对齐)应用格式。
QTextEdit.toHtml()返回的 HTML 较为冗长,因为它必须支持广泛的 HTML 标签。我们可以提供自己的方法来遍历QTextDocument的结构并输出自定义格式,例如输出更简单、更短的 HTML,同样的方法也可用于输出 XML 或其他标记。
对