百科问答小站 logo
百科问答小站 font logo



QGraphicsRectItem子类无法接收mouseMoveEvent? 第1页

  

user avatar   yao-dong-27 网友的相关建议: 
      

这是 Qt 的GraphicsItem的一项优化造成的,因为GraphicsItem不像QWidget只有很少的实例,GraphicsItem实例可以非常多,甚至可以到百万个,所以每次鼠标移动都去分发mouse move事件开销太大了,而且没必要,真正需要mouse move事件的item是很少的。

但是 Qt 提供了一个开关选项

void QGraphicsItem::setAcceptHoverEvents ( bool enabled )

打开这个选项,就可以接收到以下事件了

hoverEnterEvent(), hoverMoveEvent(), and hoverLeaveEvent().

那么mouseMoveEvent呢?在Qt Graphics item里mouse 的move和hover是不一样的。

hover是指鼠标经过,但是鼠标任何按键没有按下

move是指按下鼠标键后拖动,所以要先响应 mousePressEvent 返回 accepted,然后才会接收到move,只有响应了press的那个item才能接收到后续的move,直到mouseReleaseEvent。




  

相关话题

  为什么 UTF-8 编码比 UTF-16 编码应用更广泛? 
  计算机系统是如何显示一个字符的? 
  部分少数民族人士因姓名有间隔号(·)无法申请银行账户等,技术上有办法解决吗,需要多久? 
  很多网站源码都是分为 GBK 和 UTF-8 版,为什么要同时开发两种? 
  计算机中为何不直接使用 UTF-8 编码进行存储而要使用 Unicode 再转换成 UTF-8 ? 
  Unicode 和 UTF-8 有什么区别? 
  为什么Unicode字符「」显示为苹果公司图标? 
  为什么Unicode字符「」显示为苹果公司图标? 
  windows 的文本编码问题,什么时候能统一成utf-8? 
  目前(2020 年)开发WINDOWS程序,用UNICODE还是多字节更实际? 

前一个讨论
大学四年单身是一种怎样的体验?
下一个讨论
为什么柴静的《穹顶之下》会受到很多人的抨击?





© 2024-12-18 - tinynew.org. All Rights Reserved.
© 2024-12-18 - tinynew.org. 保留所有权利