GUIでバックエンドから毎秒40ラインの平均速度で多くのログ行を表示するには、QListWidgetより優れていますか?QListWidget :: addItem()は、1秒間に40回コールするとちらつきが発生する
QListWidgetは、多くの文字列がすでにListWidgetに配置されているときに、長い間ウィジェットの代わりに点滅し、白いボックスを表示します。
ユーザーにログ行を動的に表示するためのより良いソリューションはありますか?
更新:
変更されたアーキテクチャ。 新しいQStringsをstd :: dequeに追加する< QString *>。 QTimerを使用して、その文字列を1/10秒ごとにQPlainTextEditに追加し、両端キューから削除します。 boost :: mutexはstd :: dequeを保護するために使われます(ログ行は別のスレッドから来ています)。
私自身のQListViewを実装し、文字列を事前に割り当てられたメモリの大きな塊に保持するのは良いことです。
私はときに私QPlainTextEditは、メモリ再割り当ての多くを引き起こす可能性が怖いです行を追加します。 QListWidgetは、行を分割線の連鎖として格納するために魅力的です。 – pavelkolodin
@pavelkolodin、QListWidgetを使用すると、QtのMVCフレームワークのオーバーヘッドが発生するため、プレーンテキストを使用する場合よりも多くのメモリを消費します。あなたがナットを割るためにスレッジハンマーを使用しようとしているようです。とにかく毎秒40本のラインでは、ちらつきを避けるためにビデオゲームのような最適化が必要です。多分あなたのロガーを実装するためにOpenGLやDirect 3Dを試してみてください:) –
@Laurent、ありがとう。 QPlainTextEditははるかに高速です。 – pavelkolodin