我尝试构建一个用户界面,在每秒刷新数据时显示表的内容。
因此我有一系列模特:
QSqlTableModel
- 访问表格内容QIdentityProxyModel
以稍微修改数据(source是TableModel)此链以QTableView
结尾。因为QSqlTableModel
每秒刷新一次,
TableView中的任何选择也会每秒删除一次。现在我有两个想法来解决这个问题。
QIdentityProxyModel
不会转发像modelAboutToBeReset或modelReset或dataChanged这样的信号..也不可能从MyModel重新发送这些信号,因为它们是私有的。我正在寻找其他方法来解决这些刷新问题但没有成功。但我无法想象我是第一个使用代理模型链并定期刷新和选择的人。
有人能给我一些提示吗?
提前致谢。
也许值得注意:
QSqlTableModel
用于许多TableView。 (使用不同的FilterProxyModel链。)所以我不能只是停止刷新,因为一个View有选择。希望我的问题有道理。
答案 0 :(得分:1)
QAbstractItemModel
包含许多信号,可以帮助您了解模型中的数据何时或将要更改。特别是,它有以下信号:
鉴于您丢失了选择,我认为粗体信号是您想要关注的信号,因为默认的Qt行为是保留选择,如果它们可以删除/插入列或行的位置,它不会不会影响选择。
在连接到这些信号之后,在modelAboutToBeReset
中,我建议您获取可以重复使用的单元格的ID以再次选择它们,然后在modelReset
中使用这些ID获取{{1} s并使用它们再次选择相同的单元格。