可移动的QGraphicsItem父级但不是子级QGraphicsItem

时间:2014-01-28 22:52:04

标签: qt pyside

通过QT和Pyside创建QGraphicsItem时,您可以使用childItem.setParentItem(parentItem)设置它的父级。如果在父级上设置了ItemIsMoveable标志,则拖动父级将转换父级及其所有子级。

在我的用例中,我希望能够在从父级内部的任何位置拖动时拖动父级和子级,但也不能在子级内部拖动。我想在点击并拖动孩子时有不同的动作。例如,如果制作节点图编辑器,能够拖动节点及其连接点,但是当从连接点向外拖动时,创建图边。

这可以使用内置的QT标志来完成,还是必须为父项重载鼠标移动事件?我最初沿着超载路线走下去,但感觉我可能正在与已经内置的东西作战。

1 个答案:

答案 0 :(得分:0)

Marek R的答案是我发现的最干净的答案。只需在子代中实现mousePressEvent,以防止它导致父级的可移动行为:

class Child(QtGui.QGraphicsItem):
  def __init__(self, name):
    super(Child, self).__init__()

  def mousePressEvent(self, event):
    pass