2012-09-02 78 views
1

我創建了一個QGraphicsView衍生的窗口小部件,其中包括需要在其中的項目之間創建連接 - 有點像控制流圖。但我無法落實「畫」在發生拖動時更新QGraphicsItem

我已經試過兩種方法的連接方法:

  1. 創建QGraphicsLineItem派生的對象時,源對象的mouseMoveEvent(..)被解僱,並與每個更新它隨後的舉動。這條線是成功繪製和更新的,但最終這不起作用,因爲移動鼠標將事件循環鎖定爲僅處理鼠標移動事件,因此其他對象的hoverEnterEvent(..)/ hoverMoveEvent(..)/等等方法不被調用(這些都需要完成連接)。
  2. 在mouseMoveEvent(..)中創建一個QDrag實例來創建兩個對象之間的連接允許兩個對象一旦丟棄就形成一個連接,但最終這是行不通的,因爲QDrag::exec()調用不提供其他對象的手段通知鼠標移動 - 所以繪製的連接無法更新。

我真的需要這兩者的組合:在一個完美的世界QDrag::exec()通話將允許其他某種的鼠標移動的通知,所以我可以更新代表連接的對象。有人有建議嗎?

類似於question

+0

它可能不會做的正是你想要的東西,但有Qt中的一個圖表場景例如:http:// qt-project.org/doc/qt-4.8/graphicsview-diagramscene.html –

回答

1

我有一個開源的小部件,它是用於PyQt的,但它可能有助於您尋找的東西。

您可以在http://dev.projexsoftware.com/projects/projexui

你正在尋找的代碼中找到它在projexui框架特別是在projexui /部件/ xnodewidget

最後,我用鼠標按下事件發現XNodeWidget類通過現場開始連接並忽略事件(基於某種觸發器 - 控制按鈕或熱點區域等)

希望有所幫助!

(什麼它看起來像一個例子是在軌道器應用程序表視圖 - http://www.projexsoftware.com/software/orbiter

+0

謝謝你就是我要找的! – cmannett85

相關問題