当底层模型更改时,如何禁用QTableView中的自动滚动到顶部?

3
我创建了一个类,它是从QTableView继承而来的,相关的模型是从QAbstractTableModel派生出来的。模型中的数据是性能数据(进程名称、内存使用情况等),这些数据会以短时间间隔不断更新。
更新模型的方法是先删除所有数据(用beginRemoveRows/endRemoveRows包围),然后将稍微更改的数据作为批处理操作“重新添加”(用beginInsertRows/endInsertRows包围)。
当我清除/重新添加时,如何禁用垂直自动滚动到顶部?

Please post as an answer - crazyjul
不要将你在问题中的解决方案复制到答案中。 - crazyjul
1个回答

1

解决方案

滚动条的移动是由于使用 beginRemoveRows/endRemoveRows 信号来删除所有数据。为了避免这种情况,我改为发出一个 dataChanged(...) 信号,并提供更新后的项目列表的起始/结束索引(如果它比现有模型小),或者使用现有模型的索引(如果更新后的列表更大)。如果更新后的列表较小,则使用 begin/endRemoveRows,如果更新后的列表更大,则使用 begin/endInsertRows


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接