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

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

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

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

【问题讨论】:

  • 请作为答案发布
  • 不,将您的工作解决方案从问题复制到答案

标签: c++ qt qtableview


【解决方案1】:

工作解决方案

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 2014-12-12
    • 2016-01-16
    相关资源
    最近更新 更多