通过QT和Pyside创建QGraphicsItem
时,您可以使用childItem.setParentItem(parentItem)
设置它的父级。如果在父级上设置了ItemIsMoveable
标志,则拖动父级将转换父级及其所有子级。
在我的用例中,我希望能够在从父级内部的任何位置拖动时拖动父级和子级,但也不能在子级内部拖动。我想在点击并拖动孩子时有不同的动作。例如,如果制作节点图编辑器,能够拖动节点及其连接点,但是当从连接点向外拖动时,创建图边。
这可以使用内置的QT标志来完成,还是必须为父项重载鼠标移动事件?我最初沿着超载路线走下去,但感觉我可能正在与已经内置的东西作战。
答案 0 :(得分:0)
Marek R的答案是我发现的最干净的答案。只需在子代中实现mousePressEvent
,以防止它导致父级的可移动行为:
class Child(QtGui.QGraphicsItem):
def __init__(self, name):
super(Child, self).__init__()
def mousePressEvent(self, event):
pass