【发布时间】:2015-09-29 13:42:59
【问题描述】:
我正在尝试每 60 秒更新一次 QTreeWidget。我现在在 QTimer 上拥有它,但我担心的是,当它更新时会破坏用户的进度(例如,如果他们打开了父级以便您可以看到子级,当我更新它时会完全重置结构)。有什么模型或我可以做些什么来防止这影响他们的进步吗?
【问题讨论】:
标签: pyqt qtreeview qtreewidget qtreewidgetitem
我正在尝试每 60 秒更新一次 QTreeWidget。我现在在 QTimer 上拥有它,但我担心的是,当它更新时会破坏用户的进度(例如,如果他们打开了父级以便您可以看到子级,当我更新它时会完全重置结构)。有什么模型或我可以做些什么来防止这影响他们的进步吗?
【问题讨论】:
标签: pyqt qtreeview qtreewidget qtreewidgetitem
视图无法更新并记住先前展开的项目。您可以缓存视图的状态并在更新后使用QTreeWidget::expand 和QTreeWidget::scrollTo 重建它,但用户仍会看到视图如何关闭和再次展开。此外,仅存储当前扩展项目的索引是不够的,因为更新后可能会发生变化。所以你必须缓存一些唯一标识符,然后在更新的小部件中搜索它。
您尝试执行的操作非常不寻常,因为通常您只会在数据更改时更新小部件,而不是使用固定的时间间隔。
考虑将 QTreeView 与 QAbstractListModel 结合使用,而不是 QTreeWidget,因为后者旨在保存常量数据。然后您可以在自动更新 QTreeView 的模型上发出 dataChanged。
【讨论】: