首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在QAbstractTableModel更改时更新QTableView

如何在QAbstractTableModel更改时更新QTableView
EN

Stack Overflow用户
提问于 2017-07-28 03:35:43
回答 1查看 11K关注 0票数 1

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-28 05:01:10

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

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

代码语言:javascript
复制
self.dataChanged.connect(self.view.refresh) 

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

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

代码语言:javascript
复制
self.dataChanged.emit(self.index(X, Y), self.index(X, Y)) 

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

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45359569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档