高级模型/视图编程与国际化应用开发
1. 树状结构中的表格数据表示
理解树模型比理解表格模型(或列表模型,即单列的表格)更具挑战性。不过,在很多情况下,可以通过构建或调整相关代码来降低难度。
1.1 视图与数据可视化
PyQt 内置的视图小部件和图形视图小部件为数据集的可视化提供了很大的空间。当这些类无法满足需求时,我们可以创建自定义视图,按照自己的喜好展示数据。
对于自定义视图,由于可能要显示非常大的数据集的一部分,通常最好优化绘制事件处理程序,只检索和显示实际可见的数据项。如果需要滚动条,可以让视图类的用户使用QScrollArea,或者创建一个包含几个QScrollBar的复合小部件,或者创建一个继承自QAbstractScrollArea的小部件。第一种方法只需在用户代码中添加几行,并且使视图的实现更加容易。
1.2 委托的使用
使用通用委托和特定数据类型的列委托可以轻松为视图创建临时的“自定义”委托。列委托易于创建,并且可以减少代码重复,因为对于每种要处理的数据类型,我们只需要一个列委托。通用委托方法非常适合每列数据只包含单一数据类型的数据集,例如数据库表。
1.3 树模型的创建
创建树模型可能很困难,因为我们必须从父节点和子节点的角度去思考,而子节点可能也是父节点,以此递归到任意深度。这不像树和列模型那样从行和列的角度思考那么容易。不过,一些提供树功能的方法,如index()、parent()