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