当底层模型发生变化时,如何在QTableView中禁用自动滚动到顶部?

时间:2011-10-06 15:09:52

标签: c++ qt qtableview

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

更新模型是通过首先删除所有数据(用beginRemoveRows / endRemoveRows包含)然后“读取”稍微更改的数据作为批处理操作(用beginInsertRows / endInsertRows括起来)来完成的。

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

1 个答案:

答案 0 :(得分:1)

工作解决方案

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