3

QTableViewから派生する独自のクラスを作成しました。関連するモデルは、QAbstractTableModelから派生しています。モデル内のデータは、パフォーマンスデータ(プロセス名、メモリ使用量など)であり、短い間隔で継続的に更新されます。

モデルの更新は、最初にすべてのデータを削除し(beginRemoveRows / endRemoveRowsで囲まれます)、次にわずかに変更されたデータをバッチ操作として「読み取り」ます(beginInsertRows / endInsertRowsで囲まれます)。

クリア/読み取り時に上部への垂直自動スクロールを無効にするにはどうすればよいですか?

4

1 に答える 1

1

実用的なソリューション

スクロールバーの動きは、beginRemoveRows/endRemoveRowsを使用してすべてのデータの削除を通知することによるものでした。これを回避するために、代わりに、既存のモデルよりも小さい場合は更新されたアイテムのリストの開始/停止インデックスを使用し、更新されたリストが大きい場合は既存のモデルのインデックスを使用してdataChanged(...)シグナルを発行しました。 。また、更新されたリストが小さい場合はbegin / endRemoveRowsを使用し、更新されたリストが大きい場合はbegin/endInsertRowsを使用しました。

于 2011-10-07T10:31:57.017 に答える