我有程序,用户选择一个块并可以在屏幕上移动它;但是,主块区域内的块需要相对于主块的运动移动。
我通过制作这些块的QGraphicsItemGroup并设置正确的标志来实现这一点。
dragGroup = this->scene()->createItemGroup(items);
this->dragGroup->setHandlesChildEvents(true);
this->dragGroup->setFlag(ItemIsMovable);
因此,忽略了拆除组的主要项目mouseReleaseEvent()。因此,主块内的块被卡在组中,并且在初始拖动完成后不能独立移动。我的想法是创建一个自定义QGraphicsItemGroup,其mouseReleaseEvent()调用主块事件来杀死该组。
我无法弄清楚如何做到这一点。我尝试过对它进行子类化,但是场景创建了基类,而不是我的派生类,在这种情况下,dynamic_cast似乎不起作用。
OR,是否有另一种方法来完成同样的事情,让QGraphicsItemGroup控制一些事件,而块本身控制其他事件?或者QGraphicsItemGroup在这种情况下不适合。