我尝试构建一个用户界面,该界面显示表格的内容,同时每秒刷新数据。
因此我有一系列模型:
QSqlTableModel
- 访问表格内容- MyModel - 继承自来稍微
QIdentityProxyModel
修改数据(来源是 TableModel) - SomeFilterModels - 以 MyModel 作为源
该链以QTableView
. 因为QSqlTableModel
每秒刷新一次,所以 TableView 中的任何选择也会每秒被删除。现在我有两个想法来解决这个问题。
- 防止 TableModel 检测更改。这不是很好。
- 捕获模型即将更改之前和之后触发的一些事件以存储和恢复当前选择。遗憾的是,
QIdentityProxyModel
不会转发诸如 modelAboutToBeReset 或 modelReset 或 dataChanged 之类的信号。从 MyModel 重新发送这些信号也是不可能的,因为它们是私有的。
我一直在寻找其他方法来解决这些刷新问题,但没有成功。但我无法想象我是第一个使用代理模型链以及定期模型刷新和选择的人。
谁能给我一些提示?
提前致谢。
也许值得注意:
- 一个
QSqlTableModel
用于许多 TableViews。(使用不同的 FilterProxyModel 链。)所以我不能因为一个 View 有一个选择而停止刷新。 - 您可能认为我知道何时调用模型刷新方法。但是现在通过我的 ui 架构传递这个有点复杂。我的意思是模型已更新,并且 TableView 已经通过一些 ProxyModel 连接到更新的模型。应该不需要另一种沟通方式。
希望我的问题有意义。