3

FramelessWindowHint フラグと WA_TranslucentBackground 属性が設定されたトップレベルの Qt ウィジェットがあります。複数の子があり、それぞれが画像を描画します。それらはレイアウトではありません。代わりに、何かが変更されたときにそれらを移動するだけです (ユーザーがサイズ変更できません)。

ウィンドウには、大きな状態と小さな状態の 2 つの状態があります。それらを切り替えるときは、ウィンドウのサイズを変更し、子の位置を変更します。問題は、ウィンドウのサイズが変更されると、画像がその上に描画される前に、最上位ウィンドウでブラック ボックスが短時間点滅することです。

Aero を無効にすると、問題は解決します。Qt の新しいリリース (このリリースはかなり前のことです) を説明する記事で、この問題が修正されているという簡単な言及を見つけましたが、まだ機能しません。

理由はありますか?

ありがとう!

4

1 に答える 1

0

特に Qt の経験はありませんが、他のウィンドウ ツールキットを使用したことがあります。通常、更新を画面に直接描画しているときに、この種の点滅が見られます。修正は、代わりにDouble bufferingを使用することです。これは基本的に、更新をオフスクリーン バッファー (最も純粋な意味でのビットマップ) にレンダリングし、更新された画像全体を 1 回で画面にコピーすることを意味します。高速操作。

時々しかちらつきが見られない理由は、画面が更新される速度と更新が描画される速度の単純なアーティファクトです. 「運が良ければ」画面の更新の間にすべての更新が行われ、ちらつきが見られない場合があります。

于 2010-04-07T19:10:49.543 に答える