日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

解决Qt graphis-view框架中,上层图元接收hover事件导致底层图元接收不到的问题

發布時間:2023/12/10 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 解决Qt graphis-view框架中,上层图元接收hover事件导致底层图元接收不到的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題重現

兩個圖元,一個在上面,名為item_up,一個在下面,名為item_below。
當item_up->setAcceptHoverEvents(true)時,item_up可以接收到鼠標懸停事件(hoverEnter,hoverMove,hoverMove)。但是下層的item_below在重疊區域就接收不到懸停信號了。除非item_up->setAcceptHoverEvents(false),item_below才能在鼠標經過重疊區域時接收到懸停信號組。

問題分析

采用過各種方法,都不能很好地解決這個問題。于是最終考慮采用自定義事件的方法,自己實現。

解決方案

自定義三個事件,鼠標進入,鼠標移動,鼠標退出。
在畫布的鼠標移動事件處理函數mouseMoveEvent中,將鼠標事件轉換為圖元的鼠標選題懸停事件,發送給當前鼠標下的所有圖元,并結合判斷acceptHoverEvents()來確定圖元是否需要接收此事件,減少計算量。
在圖元中的sceneEvent中響應三個信號。或者自定義一個圖元基類,實現事件識別與處理函數分配,并定義三個虛函數,用于子類重新實現自定義事件響應。

note
使用event->ignore()不能解決重疊導致的事件傳遞中斷問題。
點擊事件即使在圖元重疊的狀態下也可以接收到。

總結

以上是生活随笔為你收集整理的解决Qt graphis-view框架中,上层图元接收hover事件导致底层图元接收不到的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。