我创建了自己的类,它派生自QTableView,关联的模型派生自QAbstractTableModel。模型中的数据是性能数据(进程名称,内存使用等),它们会以较短的间隔不断更新。
更新模型是通过首先删除所有数据(用beginRemoveRows / endRemoveRows包含)然后“读取”稍微更改的数据作为批处理操作(用beginInsertRows / endInsertRows括起来)来完成的。
每当我清除/读取时,如何禁用垂直自动滚动到顶部?
答案 0 :(得分:1)
工作解决方案
滚动条移动是由于使用 beginRemoveRows / endRemoveRows 删除了所有数据。为了避免这种情况,我改为发出 dataChanged(...)信号,其中包含更新的项目列表的开始/停止索引(如果它小于现有模型),以及来自现有模型的索引如果更新的列表更大,则建模。如果更新的列表较小,我还使用 begin / endRemoveRows ,如果更新的列表更大,我还使用 begin / endInsertRows 。