2016-08-15 9 views
1

Qt5.6を使用していますが、QWidgetグラフィックオブジェクトがレンダリングされていて、他のグラフィックスがレンダリングされたときに、フロント。Qtグラフィックは別のものによって隠されていますが、まだペイントアップデートが発生します

これはオーバーヘッドを発生させます。グラフィックスが前面に表示されているかどうかを確認したい場合は、ペイントイベントを中止する必要があります。

私はこれが自動であり、Qtの内部の一部として行われると考えましたが、そうは思われません。

+0

QWidgetから派生したオブジェクトです。 – SPlatten

+0

1)どのようにして、あるウィジェットの状況が他のウィジェットの上に完全になったのですか? 2)あなたのQPaintEvent引数にクリップされていない領域が得られていますか? – peppe

+0

私のアプリケーションは、XMLファイルからコンテンツをレンダリングします。いくつかのウィジェットには、親ウィジェットが表示されます。 – SPlatten

答えて

1

各ウィジェットのペイントイベントは、コンポジットがウィジェットを再描画する必要があると判断した時点で、ウィジェットコンポジットから来ます。イベントが到着すると、ウィジェットペイントする必要があります。そうしないと、視覚的に未定義の結果が得られます。

デフォルトでは、ウィジェットは透明にすることができ、ウィジェットコンポーザーはウィジェットの全スタックをバックツーフロントの順序でペイントして合成する必要があります。

透明でないウィジェットには、Qt::WA_OpaquePaintEvent属性が設定されている必要があります。これは、ウィジェットのコンポーザーに、ウィジェットの背後に完全に隠されているウィジェットをペイントする必要がないことを通知します。ウィジェットのすべてのピクセルをペイントするようにしてください!

+0

ありがとう私は明日最初にこれを試してみます – SPlatten

関連する問題