PyQt TreeWidget平滑更新(模型视图?)

时间:2015-07-10 17:39:37

标签: pyqt qtreeview qtreewidget qtreewidgetitem

我试图每60秒更新一次QTreeWidget。我现在在QTimer上有它,但我担心的是当它更新它会破坏用户的进度(例如,如果他们打开了父母,所以你可以看到孩子,当我更新它完全重置结构)。是否有模型或任何我可以采取的措施来防止这种情况造成伤害?

1 个答案:

答案 0 :(得分:1)

视图无法更新并记住以前展开的项目。您可以在更新后使用QTreeWidget::expandQTreeWidget::scrollTo缓存视图的状态并重新构建它,但用户仍将看到视图如何关闭并再次展开。此外,存储当前展开的项目索引是不够的,因为在更新后可能会更改。因此,您必须先缓存一些唯一标识符,然后在升级的小部件中对其进行搜索。

您尝试做的事情非常不寻常,因为通常情况下,您只会在数据更改时更新窗口小部件,而不是使用固定的时间间隔。

考虑将QTreeView与QAbstractListModel结合使用而不是QTreeWidget,因为后者旨在保存常量数据。然后,您可以在模型上发出dataChanged,自动更新QTreeView。