Qt 可移动QGraphicsItem父项但非子项QGraphicsItem
通过QT和Pyside创建Qt 可移动QGraphicsItem父项但非子项QGraphicsItem,qt,pyside,Qt,Pyside,通过QT和Pyside创建QGraphicsItem时,可以使用childItem.setParentItem(parentItem)设置其父项。如果在父项上设置了ItemIsMoveable标志,则拖动父项将转换父项及其所有子项 在我的用例中,我希望能够在从父对象内部而不是子对象内部拖动时拖动父对象和子对象。我希望在单击和拖动子对象时有不同的操作。例如,如果制作节点图编辑器,则可以拖动节点及其连接点,但从连接点向外拖动时,将创建图边 这可以通过使用内置的QT标志来实现,还是有必要重载父项的鼠标
QGraphicsItem
时,可以使用childItem.setParentItem(parentItem)
设置其父项。如果在父项上设置了ItemIsMoveable
标志,则拖动父项将转换父项及其所有子项
在我的用例中,我希望能够在从父对象内部而不是子对象内部拖动时拖动父对象和子对象。我希望在单击和拖动子对象时有不同的操作。例如,如果制作节点图编辑器,则可以拖动节点及其连接点,但从连接点向外拖动时,将创建图边
这可以通过使用内置的QT标志来实现,还是有必要重载父项的鼠标移动事件?我最初是沿着超载路线走的,但我觉得我可能在与已经内置的东西作斗争。Marek R的答案是我发现的最清晰的答案。只需在子对象中实现
mousePressEvent
,以防止其导致父对象的可移动行为:
class Child(QtGui.QGraphicsItem):
def __init__(self, name):
super(Child, self).__init__()
def mousePressEvent(self, event):
pass
我想我可能找得不够好。几乎完全相同。我将尝试并实现,如果它看起来不错,我将回答这个问题,或者根据我的发现关闭它。我不介意讨论最“QT”的方式,但这可能是重复的。只需为孩子提供
mousePressEvent
(可能还有其他鼠标事件)的空实现。然后,该儿童将窃取其范围内的所有鼠标事件。