我有我的自定义GraphicsScene数的QGraphicsItem对象。它们具有不同的自定义类型,因此其中一些必须以一种方式处理MouseMove事件,而其他方式则以不同方式处理。 当我选择他们中的一些,然后移动选定项目仅是鼠标光标下的项目接收MouseMove事件,但其他项目不。移动开始时,我必须在MyCustomItemClass :: mouseMoveEvent中做一些额外的操作。 那么为什么其他项目不会收到事件?为什么所有选定的QGraphicsItem没有收到mouseMove事件?
回答
从你的描述,我不会在MyCustomItemClass::mouseMoveEvent
因为当对特定项目的顶部的鼠标移动,你已经说过这只是执行处理这些动作。
相反,我会在scene
中对mouseMoveEvent
进行分类,以检查哪些项目被选中并在这些项目中执行相关的方法。当然,您必须小心谨慎,以便根据相对鼠标移动将它们移动到原始位置。
如果您想要选择一组项目,然后一次全部移动它们,您可以在选择期间将它们添加到QGraphicsItemGroup,然后将该组作为单个对象移动,这将移动组中的所有项目。
但是我也需要分别执行组中任何项目的移动。 QGraphicsItemGroup不提供这种可能性 - 在从组中移动某个项目时,所有分组项目始终会随此项目一起移动。 – vasyl 2014-11-24 15:34:38
如果选择多个项目,请添加到组并移动。取消选择时,从组中删除项目。 – TheDarkKnight 2014-11-24 15:49:50
- 1. 为什么GroupBox没有MouseMove事件?
- 2. 为什么div和body没有获取mousemove事件?
- 3. QGraphicsItem:为什么没有`stackAfter`方法?
- 4. 为什么我的自定义控件没有收到拖放事件?
- 5. iphone SDK:不知道为什么我没有收到UITextField事件?
- 6. 为什么进程没有收到队列事件?
- 7. 为什么在使用MouseAdapter时没有收到mouseDragged事件?
- 8. 有QGraphicsItem接收所有鼠标移动?
- 9. setOnItemLongClickListener没有收到事件
- 10. 为什么我没有收到与get_post_type()
- 11. 为什么我没有收到广播?
- 12. 为什么我没有收到BOOT?
- 13. 为什么没有Windows.Forms.TreeView的SelectedNodeChanged事件?
- 14. 为什么我的代表没有收到这个选择器?
- 15. 为什么我没有通过Com4J接收COM事件?
- 16. C#ScrollableControl没有收到所有滚动事件
- 17. 没有事件处理程序的绑定事件。为什么它有效?
- 18. 为什么事件没有通过?
- 19. 为什么`.draggable()`没有`dropped`事件?
- 20. React.js:为什么没有componentDidRender事件?
- 21. 为什么Entry.insert没有事件执行?
- 22. keydown事件没有解雇,为什么?
- 23. 为什么事件没有执行?
- 24. 为什么我没有收到我的锚元素的任何事件?
- 25. 从iframe接收mousemove事件
- 26. 为什么我收到消息“所有包含的玩家没有订阅”?
- 27. iOS的 - 没有收到UIEventTypeRemoteControl事件
- 28. 为什么没有收到来自gcm的邮件
- 29. onbeforeunload没有捕捉到所有事件
- 30. 为什么我的jQuery没有绑定我的事件?
但是对于那些坐落在现场我有移动开始时执行不同的操作不同类别的项目。而这些类可能没有共同的基类。检查场景中项目类型的方法并不好,因为我们必须将场景上的项目投射到特定的类类型。我该如何处理? – vasyl 2014-11-24 15:28:54
铸造有什么问题?你有多少个不同的课程,这是太多的努力? – Bowdzone 2014-11-24 20:46:40
即使有四种不同的类别,铸造是不是最好的解决方案,因为巨大的if-else序列。 – vasyl 2014-11-25 14:15:45