底层模型更改时如何在 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 中禁用自动滚动到顶部?的主要内容,如果未能解决你的问题,请参考以下文章
PyQt5 QTableView:如何在保持默认样式/颜色的同时禁用用户交互/选择?