2011-10-06 101 views
3

我已經創建了我自己的從QTableView派生的類,關聯模型是從QAbstractTableModel派生的。模型中的數據是性能數據(進程名稱,內存使用情況等),它們以較短的時間間隔不斷更新。如何在底層模型更改時禁用自動滾動到QTableView頂部?

通過首先刪除所有數據(用beginRemoveRows/endRemoveRows括起來),然後將稍微更改的數據作爲批處理操作(用beginInsertRows/endInsertRows括起來)進行「讀取」來完成更新模型。

每當我清除/讀取時,如何禁用垂直自動滾動到頂部?

+0

請發表回覆作爲回答 – crazyjul

+0

你想要確切的代碼嗎? – Kristofer

+0

不,將您的工作解決方案從問題複製到答案 – crazyjul

回答

1

工作溶液

滾動條運動,是由於使用的信令beginRemoveRows/endRemoveRows所有數據的去除。爲了避免這種情況,我反而發出一個dataChanged(...)信號,如果它小於現有模型,則使用更新的項目列表的開始/停止索引,如果更新的列表來自現有模型的索引更大。如果更新的列表較小並且開始/結束插入行(如果更新的列表較大),我還使用了begin/endRemoveRows