gpt4 book ai didi

python - 如何在 QAbstractTableModel Change 上更新 QTableView

转载 作者:行者123 更新时间:2023-12-02 03:51:06 27 4
gpt4 key购买 nike

在使用 QTableViewQAbstractTableModel 时,有时 QTableView 不会随着 QAbstractTableModel 数据中发生的变化而更新。为了“强制”或触发 View 更新,我使用 QAbstractTableModel 的 self.layoutChanged.emit() 方法。

虽然它有效,但我注意到此方法可能会导致一些不稳定甚至崩溃。我想知道当 QAbstractTableModel 发生变化时是否有其他方法可以更新 QTableView?

最佳答案

基本上,您可以将一个函数连接到模型 dataChanged 信号/事件,或者您可以将此信号插入到用于修改模型的函数中(如果您已实现)。

第一个选项可能如下所示,在您的模型类中,

self.dataChanged.connect(self.view.refresh) 

其中 refresh() 是您 View 中的一个自定义插槽,它会触发一个简单的 self.update(),否则您需要处理信号发送的参数(影响父级 QModelIndex)。


第二个选项需要使用 QModelIndex 发出信号,当您在模型类中应用一些更改时在函数中调用它:

self.dataChanged.emit(self.index(X, Y), self.index(X, Y)) 

其中 X 和 Y 代表更改数据在您的表中的位置

第三个参数role是一个选项,即你可以指定DisplayRole,否则所有角色都可以更新。

关于python - 如何在 QAbstractTableModel Change 上更新 QTableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45359569/

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