我正在尝试每 60 秒更新一次 QTreeWidget。我现在在 QTimer 上拥有它,但我担心的是,当它更新时会破坏用户的进度(例如,如果他们打开了父级以便您可以看到子级,当我更新时它会完全重置结构)。有没有模型或我可以做些什么来防止这损害他们的进步?
问问题
429 次
1 回答
1
视图不可能更新和记住以前展开的项目。您可以缓存视图的状态并在更新时QTreeWidget::expand
和QTreeWidget::scrollTo
更新后重建它,但用户仍将看到视图如何关闭和再次展开。此外,仅存储当前扩展项目的索引是不够的,因为更新后可能会发生变化。因此,您必须缓存一些唯一标识符,然后在更新的小部件中搜索它。
您正在尝试做的事情非常不寻常,因为通常您只会在数据更改时更新小部件,而不是使用固定的时间间隔。
考虑将 QTreeView 与 QAbstractListModel 而不是 QTreeWidget 结合使用,因为后者旨在保存常量数据。然后你可以在自动更新 QTreeView 的模型上发出 dataChanged。
于 2015-07-11T10:29:33.357 回答