【发布时间】:2016-04-24 07:02:03
【问题描述】:
我正在编写一个使用 Qt Graphics View 框架的程序。我已将 QGraphicsItem 子类化为包含其他 QGraphicsItem (或它的其他子类)的类。这个类是包含的QGraphicsItem的父类;这个想法是使用复合对象。
从docs看来,我试图实现的目标似乎存在冲突:
- 在
mousePressEvent中调用ignore()将使我的对象无法移动。我想移动它。 - 在
mousePressEvent中调用accept()将阻止事件传播到子对象。一些子对象应该对鼠标事件做出反应。
我怎样才能做到这一点?
【问题讨论】:
-
您是否考虑过通过让父处理程序调用 QApplication::postEvent 将事件发送给每个项目的子项?
-
忽略我最后的评论。馊主意。请参阅下面 Styne 的回答。
-
我现在正在尝试这个:鼠标左键是移动动作的开始,所以它在
mousePressEvent()中被接受并由对象处理。没有其他对象会得到该事件。对于其他输入(右键、修改键),该事件将被忽略并移至下一个对象。 Stynes666 说得对,有些东西没有多大意义。
标签: qt mouseevent qgraphicsitem