2010-10-10 58 views
1

我有一個QGraphicsScene作爲主場景,其中有幾個可移動的QGraphicsItem s和另一個QGraphicsScene作爲疊加層。疊加場景與用戶的顯示器尺寸完全相同,而主場景要大得多,因此需要自動上下滾動。如何將QGraphicsItem移動到另一個場景而不會丟失鼠標?

如果主場景中的項目要移動,我想從主場景中刪除該項目並將其添加到疊加場景中,讓用戶將該項目移動到疊加場景中,並且儘快鼠標被釋放後將其放回主場景。這使我可以在物體接近顯示器的邊緣時順利地自動滾動主場景。

問題如下;當某個物品從其場景中移除時,它會收到一個QMouseUngrab事件,因此無法在覆蓋物場景中再次單擊它時繼續移動該物品。我試圖阻止ungrab事件或在overlayscene中生成假冒QMousePress,但是他們都沒有解決這個問題。

你知道我該如何開始在一個場景中移動一個項目,並繼續在另一個場景中移動它而沒有任何中斷?

換句話說:

  1. QMousePress發生在主場景
  2. 幾個QMouseMove秒和最終一個QMouseRelease應在覆蓋場景
  3. 權發生QMouseRelease後,該項目將被放回主場景

回答

1

你可能需要做的是使用drag and drop framework。當鼠標離開初始畫布時,您可以開始系統拖動,然後只要您的疊加場景接受您打包到您的QDrag中的啞劇數據,兩者可以互操作。

這是一個有點令人沮喪的系統,因爲它提供了所有平臺上最不共同的分母功能。但它可以讓你在一個操作中在兩個小部件之間進行通信。

相關問題