gpt4 book ai didi

qt - 当对象在外部发生变化时更新 QListView

转载 作者:行者123 更新时间:2023-12-05 09:25:33 27 4
gpt4 key购买 nike

我有一个关于当模型对象在外部发生变化时更新 QTreeView(或 QAbstractItemView 的任何子类)的简单问题。假设一个列表显示了 QAbstractItemModel 的一个子类,并且该模型的一个项目在列表窗口之外发生了变化,我们想用变化更新列表。实现这样的目标的通常策略是什么?我查看了 QAbstractItemModel 的 Qt 文档,有一个名为“dataChanged”的信号,当数据出现时(或应该)发出从模型变化。但是由于这个信号(正如所有 QAbstractItemModel 函数/信号/槽)与 QModelIndex 一起工作,正如文档明确指出的那样,它不是持久的,我是否应该以某种方式存储我的数据到 的映射>QPersistentModelIndex(es),所以当我的数据发生变化时,我将能够找到相应的 QPersistenModelIndex 并将其用作各种 QAbstractItemModel 函数的参数?这就是 QPersistentModelIndex(es) 的用途吗?或者我错过了什么?

谢谢。

ps:我想我可以重新加载QTreeView,但那样我就不知道哪些项目被展开或哪些被选中了。是否有解决此问题并重新加载列表的策略?

最佳答案

QTreeView 已经处理了底层模型数据发生变化的情况(即模型发出了 dataChanged() 信号)。这意味着您不需要对 View 做任何额外的工作。

如果您要实现自己的模型(QAbstractItemView 的派生类),并且要更改模型的内容,您只需发出 dataChanged () 更改完成时发出信号。信号/槽机制将使用该信号自动通知 View 。

关于qt - 当对象在外部发生变化时更新 QListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1336845/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com