3

我已经创建了自己的派生自 QTableView 的类,关联的模型是从 QAbstractTableModel 派生的。模型中的数据是性能数据(进程名称、内存使用情况等),它会以很短的时间间隔不断更新。

更新模型的方法是首先删除所有数据(包含在 beginRemoveRows/endRemoveRows 中),然后将稍微更改的数据作为批处理操作“读取”(包含在 beginInsertRows/endInsertRows 中)。

每当我清除/读取时,如何禁用垂直自动滚动到顶部?

4

1 回答 1

1

工作解决方案

滚动条移动是由于使用beginRemoveRows/endRemoveRows发出删除所有数据的信号。为了避免这种情况,我改为发出一个dataChanged(...)信号,如果它小于现有模型,则使用更新的项目列表的开始/停止索引,如果更新列表更大,则使用现有模型的索引. 如果更新的列表更小,我还使用了begin/endRemoveRows 如果更新的列表更大,我还使用了 begin/endInsertRows。

于 2011-10-07T10:31:57.017 回答