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 に答える