仅在特定区域中的鼠标时移动QGraphicsItem

时间:2012-11-07 16:19:38

标签: qt python-2.7 pyside qgraphicsitem

我正在尝试使用PySide在python中创建类似于terragens节点网络视图的东西 我使用此代码将QGraphicsRectItem子类化。

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

我想通过将鼠标从一个小矩形拖到另一个小矩形来实现连接节点,但这会导致移动整个节点。

因此,当鼠标在一个小矩形内按下时,我不希望QGraphicsRectItem被移动。我怎么能这样做。

(如果需要,我可以定义类似isInDraggingArea(x,y)

的内容

提前致谢。

1 个答案:

答案 0 :(得分:2)

我找到了解决方案,抱歉浪费你的时间。

在场景中添加以下代码:

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