QGraphicsItem選択を解除再描画の問題
-
22-09-2019 - |
質問
非常に簡単なQt GUIアプリケーション:
- のシーンって複数の円として実施されQGraphicsItem
- boundingRectを返しますスクエア周辺 こ円です。
- 法"形状"ではありませんオーバーライドになります。
の問題が表示され塗装()メソッドで私は追加:
if (isSelected()) {
painter->drawRect(re);
}
選択が描かれたもunselectionな原因と再描画.でレベルのログを見ると、その項目も失われた選考フラグ。呼び出しupdate()からitemChangeは役に立ちます。よろしくお願いしず。
解決
は10日後、私は戻って、この問題に戻って、私のQGraphicsItemを用いて構築することを発見します
setCacheMode(DeviceCoordinateCache);
ああ、神様!選択(デフォルトQGraphicsItem :: NoCache命令を使用することによって)この行が削除された愚かな間違いは、再描画もあります。
他のヒント
また、デフォルトsetViewportUpdateModeとFullViewportUpdateにQGraphicsView :: MinimalViewportUpdateを(QGraphicsView :: FullViewportUpdate)に変更しようとすることができます。
それとも、()シーンを呼び出すことができます - >更新();アイテムから再描画をスケジュールします。
私は項目にQGraphicsItem :: ItemHasNoContentsフラグを変更保管時にそのうちの一つは、少なくとも必要とした。
所属していません StackOverflow