我有我的自定義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. QGraphicsItem:爲什麼沒有`stackAfter`方法?
- 2. 爲什麼我的自定義控件沒有收到拖放事件?
- 3. 爲什麼在使用MouseAdapter時沒有收到mouseDragged事件?
- 4. 爲什麼進程沒有收到隊列事件?
- 5. 有QGraphicsItem接收所有鼠標移動?
- 6. setOnItemLongClickListener沒有收到事件
- 7. 爲什麼我沒有收到與get_post_type()
- 8. 爲什麼沒有Windows.Forms.TreeView的SelectedNodeChanged事件?
- 9. 爲什麼我沒有通過Com4J接收COM事件?
- 10. 從iframe接收mousemove事件
- 11. 沒有事件處理程序的綁定事件。爲什麼它有效?
- 12. 爲什麼事件沒有執行?
- 13. keydown事件沒有解僱,爲什麼?
- 14. 爲什麼`.draggable()`沒有`dropped`事件?
- 15. 爲什麼Entry.insert沒有事件執行?
- 16. 爲什麼我收到消息「所有包含的玩家沒有訂閱」?
- 17. 爲什麼我的jQuery沒有綁定我的事件?
- 18. 爲什麼我不斷收到NameError:名字「PS」沒有定義
- 19. jQuery拖放問題:mousemove事件沒有綁定某些元素
- 20. 抑制「沒有什麼可爲'所有'」
- 21. 點擊複選框後沒有收到複選框事件
- 22. 有什麼辦法可以加速mousemove事件嗎?
- 23. C#FlowLayoutPanel滾動條上沒有檢測到MouseMove事件
- 24. UITextField沒有收到觸摸事件
- 25. 子iframe沒有收到觸摸事件
- 26. CDI事件沒有從Singleton EJB收到
- 27. JApplet/JPanel沒有收到KeyListener事件!
- 28. kivy事件調度,但沒有收到
- 29. 推者沒有收到任何事件
- 30. 可可nextEventMatchingMask沒有收到NSMouseMoved事件
但是對於那些坐落在現場我有移動開始時執行不同的操作不同類別的項目。而這些類可能沒有共同的基類。檢查場景中項目類型的方法並不好,因爲我們必須將場景上的項目投射到特定的類類型。我該如何處理? – vasyl 2014-11-24 15:28:54
鑄造有什麼問題?你有多少個不同的課程,這是太多的努力? – Bowdzone 2014-11-24 20:46:40
即使有四種不同的類別,鑄造是不是最好的解決方案,因爲巨大的if-else序列。 – vasyl 2014-11-25 14:15:45