0

グローバル画面座標で定義された画面上の領域があるとします。その領域に移動するウィジェット (トップ レベル ウィンドウ) があります (標準のアニメーション技術を使用)。たまたま画面定義領域の外にあるウィジェットの部分を、その領域に完全に入るまで切り抜きたいと思います。つまり、ウィジェットをその長方形の内側にのみ描画したいのです。

考えられる次善の解決策の 1 つは、ウィジェットの位置が変わるたびに update() を呼び出すことです。その後、paintEvent で、QPainter で関連するローカル クリッピングを計算して設定できます。ただし、画面上で移動したという理由だけでウィンドウ全体を再描画するのは非常に非効率的です。基本的に私の質問は、ウィジェットにグローバルクリッピング リージョンを設定できるかどうかということになります。

4

1 に答える 1

0

グローバルクリッピングは不可能だと思います。しかし、頻繁な再描画が心配で、ウィジェットのコンテンツが頻繁に、またはまったく変更されない場合は、 のQPixmap外側に描画できますpaintEvent()。ではpaintEvent()、クリップされた領域を計算した後、「QPainter::drawPixmap()」を使用してコンテンツをすばやくペイントします。これは、パフォーマンスの問題を解決するのに役立ちます。

于 2015-12-03T20:43:50.080 に答える