2012-11-07 73 views
2

我試圖在python中使用PySide創建類似於terragens節點網絡視圖的東西。
我使用此代碼子類QGraphicsRectItem。只在特定區域中移動鼠標時移動QGraphicsItem

class Node(QGraphicsRectItem): 
    def __init__(self,pos): 
     QGraphicsRectItem.__init__(self,pos.x()-100,pos.y()-30,200,60) 
     self.setFlag(QGraphicsItem.ItemIsMovable,True) 
    (...) 

其中給出了這樣的(有一些奇特的畫):

enter image description here

我想implent通過拖動從一個小矩形到另一個鼠標連接節點,但這會導致移動整個節點。

所以我不想讓QGraphicsRectItem在鼠標在一個小矩形內按下時移動。我將如何能夠做到這一點。

(如果需要的話,我可以定義類似isInDraggingArea(x,y)

在此先感謝。

回答

2

我找到了解決方案,很抱歉浪費你的時間。

在場景中添加以下代碼:

def mousePressEvent(self, event): 
    item = self.itemAt(event.scenePos()) 
    if item and item.inDraggingArea(event.scenePos()): 
      QGraphicsScene.mousePressEvent(self,event)