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

Posted

技术标签:

【中文标题】底层模型更改时如何在 QTableView 中禁用自动滚动到顶部?【英文标题】:How to disable Autoscroll to top in a QTableView when the underlying model changes? 【发布时间】:2011-10-06 15:09:51 【问题描述】:

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

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

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

【问题讨论】:

请作为答案发布 不,将您的工作解决方案从问题复制到答案 【参考方案1】:

工作解决方案

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

【讨论】:

以上是关于底层模型更改时如何在 QTableView 中禁用自动滚动到顶部?的主要内容,如果未能解决你的问题,请参考以下文章

QTableview 从过滤模型中选择项目

PyQt5 QTableView:如何在保持默认样式/颜色的同时禁用用户交互/选择?

选择单元格时,更改 QTableView 中图标的颜色突出显示

如何在 QTableView 中禁用编辑模式?

如何在调整 QTableView 大小时动态更改列数?

选择多行时QTableView变得很慢