更新QTreeView

时间:2017-06-20 15:42:20

标签: python qt pyqt qtreeview qabstractitemmodel

我正在使用QAbstractItemModel来包装一个本质上是python字典的类。

项目模型就在那里,以便我可以使用QTreeView。

当我创建我的QTreeView时,我使用我的字典实例实例化我的包装器,然后我实例化一个ItemModel来包装它。 (这个包装器的基础是:https://github.com/spanners/pyqt4-examples/blob/master/treeview.py

当我的字典发生变化时,我会发出一个信号,而ItemModel会拾取信号。我不会确切地知道改变了什么,所以我浏览了我的ItemModel中的节点,如果它们与我的字典中的节点不匹配,我添加或删除节点直到它们匹配。然后我使用根节点作为start_index发出dataChanged,然后将结束索引发送到-1,-1。

大部分时间这都很好。

但偶尔我会遇到一个可怕的Python.exe崩溃,好像我从错误的线程中访问了一个小部件。

当我正在尝试通过TreeView编辑值时,似乎特别有可能在更新下面的模型时。

在有活动的编辑器委托的情况下,我是否应该做些什么来安全地更改模型?

我应该注意哪些其他事情......或者有人更清楚我应该如何开始这样做?

0 个答案:

没有答案