百科问答小站 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。




  

相关话题

  从uft8解码的乱码字符无法反推回原始二进制,如果让你改造utf8编码,你会如何解决这个缺陷? 
  从uft8解码的乱码字符无法反推回原始二进制,如果让你改造utf8编码,你会如何解决这个缺陷? 
  计算机中为何不直接使用 UTF-8 编码进行存储而要使用 Unicode 再转换成 UTF-8 ? 
  Unicode 字符集中有哪些神奇的字符? 
  windows 的文本编码问题,什么时候能统一成utf-8? 
  Unicode 字符集中有哪些神奇的字符? 
  GB 18030 根上跟 Unicode 有关系吗? 
  计算机系统是如何显示一个字符的? 
  为什么Unicode字符「」显示为苹果公司图标? 
  为什么 UTF-8 编码比 UTF-16 编码应用更广泛? 

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





© 2024-11-22 - tinynew.org. All Rights Reserved.
© 2024-11-22 - tinynew.org. 保留所有权利