QTableView
Mint Linux 12 で Qt4.8 を使用して、モデルの内容を表示する を含む単純なウィンドウを実装しました。モデル データは継続的に更新され (ログ メッセージ)、dataChanged()
シグナルは定期的に (つまり、100 ミリ秒ごとに) 送信されます。
私が目にする問題は、テーブルの視覚的な更新が途切れることです。
タイプのイベントをカウントするウィンドウにイベント フィルタをインストールしましたupdateRequest
。これにより、ウィジェットの再描画がトリガーされます (子ウィジェット、つまり にもtableView
)。これらは、それらの間の平均時間は〜170ミリ秒で、標準偏差は〜90ミリ秒です(かなり大きいと思います)。しかし、知覚される視覚的な更新レートは 1 秒間に 2 ~ 3 回しかなく、なぜでしょうか。すべてのupdateRequest
イベントがウィジェットの再描画をトリガーするわけではないか、ウィンドウ システムが視覚的な更新を飲み込んでしまうようです。
repaint
2 番目のテストとして、またはupdate
100 ミリ秒ごとにウィンドウを強制的に更新しました。を使用repaint
すると、対応するupdateRequest
タイプのイベントが増加し、ギャップの標準偏差が減少することがわかりました。でupdate
、数は増加しませんでした。ただし、どちらの場合も、認識される更新レートは中程度の増加しかありませんでした。
paintEvent
また、ハンドラをオーバーロードすることなく、ウィジェットが実際に再描画される頻度を測定する良い方法はありますか? 多分何かからQTest
?
更新:イベント フィルターを拡張して、paintEvent
タイプのイベントもキャッチできるようにしました。updateRequest
1000 を超えるタイプのイベントに対して、それらの数は 1 桁しかありません。