1つQGraphicsScene
はメインシーンで、いくつかの可動QGraphicsItem
があり、もう1つQGraphicsScene
はメインシーンの上にオーバーレイとしてあります。オーバーレイシーンはユーザーのディスプレイとまったく同じサイズですが、メインシーンははるかに大きいため、自動的に上下にスクロールする必要があります。
メインシーンのアイテムを移動する場合は、そのアイテムをメインシーンから削除してオーバーレイシーンに追加し、ユーザーがオーバーレイシーンのアイテムを移動できるようにし、マウスを離すとすぐに移動できるようにします。メインシーンに戻します。これにより、アイテムがディスプレイの端に近づいたときに、メインシーンをスムーズに自動スクロールできます。
問題は次のとおりです。アイテムがシーンから削除されると、イベントを受信するQMouseUngrab
ため、オーバーレイシーンでアイテムをもう一度クリックせずにアイテムを移動し続けることはできません。オーバーレイシーンでアングラブイベントを防止したり、偽物QMousePress
を生成したりしようとしましたが、いずれも問題を解決しませんでした。
あるシーンでアイテムの移動を開始し、別のシーンで中断することなくアイテムを移動し続ける方法を知っていますか?
言い換えると:
QMousePress
メインシーンで起こります- オーバーレイシーンで数
QMouseMove
秒、最後に発生するはずですQMouseRelease
QMouseRelease
アイテムがメインシーンに戻された直後