2

我正在尝试使用 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)
    (...)

这给出了这个(带有一些精美的绘画):

在此处输入图像描述

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

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

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

提前致谢。

4

1 回答 1

2

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

在场景中添加以下代码:

def mousePressEvent(self, event):
    item = self.itemAt(event.scenePos())
    if item and item.inDraggingArea(event.scenePos()):
            QGraphicsScene.mousePressEvent(self,event)
于 2012-11-07T22:37:49.447 回答