我有我的自定義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