如何将数据延迟加载到QColumnView(使用PyQt)?

时间:2015-09-02 12:40:54

标签: python qt pyqt4 miller-columns

我想要填充QColumnView的分层数据源。数据源使用REST接口从服务器加载数据。

让我们说层次结构如下:

Car_Manufacturer -> Car_Type -> Specific_Model -> Motor_Type

我必须使用QColumnView来显示此信息(因为这是客户要求)。行为应该是这样的:

程序启动时,会从服务器加载Car_Manufacturer。单击其中一个Car_Manufacturer项时,将从服务器加载所选Car_Type的{​​{1}}项并显示在新列中。再次单击Car_Manufacturer时,必须再次从服务器获取数据,并且必须更新列。单击Car_Manufacturer后,必须从服务器查询此Car_TypeSpecific_Model的{​​{1}}项并将其加载到新列中......依此类推。< / p>

数据源有这个api:

Car_Manufacturer

层次结构中的每个元素都是项目的字符串键表示。单击某个项目时,必须通过curernt项目的层次结构通知控制器。

如何在使用数据源单击项目时让QColumnView更新一个项目的子项?添加或删除新的层次结构层时,如何保持灵活性?

1 个答案:

答案 0 :(得分:1)

假设您无法一次性提供所有数据filter it out,则您必须在旅途中修改项目模型(addingremoving rows)来自QColumnView的用户has selected

删除商品的方法不止一种:

  • 您可以使用所选列的索引并删除所有项目&#34;在左侧&#34;这一栏。
  • 您可以删除其父(或祖父母)与正在进行的选择匹配的项目

您采取的任何选择,您都必须以某种方式反映项目之间的关系。那个或QAbstractItemModel的实现,我认为这将是一个过度杀伤。