PyQt GUI编程:数据格式、布局与多文档处理

1. 数据解析与格式选择

在数据解析过程中,如果出现解析错误,会调用 fatalError() 方法。我们可以重新实现这个方法,以填充处理程序的错误文本,并返回 False 表示失败,这会使解析器结束解析并向调用者返回 False

使用PyQt的SAX解析器时,需要创建至少一个单独的处理程序子类。这并不困难,因为我们只需重新实现想要使用的方法。与DOM解析相比,SAX解析更节省内存,因为它是增量式工作的,处理大文档时速度明显更快。

在选择数据格式时,有以下几种常见格式及其特点:
| 数据格式 | 特点 | 适用场景 |
| ---- | ---- | ---- |
| 二进制格式 | 性能最佳、平台独立性好、实现简单 | 通用场景,尤其是对性能和跨平台有要求的情况 |
| 纯文本格式 | 适合手动编辑,通常用于存储简单值(如字符串、数字、日期) | 小文件,且需要手动编辑内容的场景 |
| XML格式 | 读写速度比二进制文件慢(小文件除外),但支持数据的导出和导入 | 数据需要与其他工具交互处理的场景 |

对于小文件且数据类型简单的情况,使用Python或PyQt类可能没有太大区别。若想减少编程工作量,使用 cPickle 模块是最简单的方法。但对于大文件(多兆字节)或使用复杂PyQt类型(如 QBrush QCursor 等),使用 QDataStream <