如何在 QAbstractTableModel Change 上更新 QTableView



在使用QTableViewQAbstractTableModel时,有时QTableView不会随着QAbstractTableModel数据中发生的更改而更新。为了"强制执行"或触发视图更新,我使用QAbstractTableModel的self.layoutChanged.emit()方法。

虽然它有效,但我注意到这种方法可能会导致一些不稳定甚至崩溃。我想知道当QAbstractTableModel更改时是否有另一种方法来更新QTableView?

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

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

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

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


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

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

其中 X 和 Y 表示已更改数据在表中的位置

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

相关内容

  • 没有找到相关文章

最新更新