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




  

相关话题

  Unicode 和 UTF-8 有什么区别? 
  很多网站源码都是分为 GBK 和 UTF-8 版,为什么要同时开发两种? 
  从uft8解码的乱码字符无法反推回原始二进制,如果让你改造utf8编码,你会如何解决这个缺陷? 
  Unicode 字符集中有哪些神奇的字符? 
  计算机系统是如何显示一个字符的? 
  QGraphicsRectItem子类无法接收mouseMoveEvent? 
  Unicode 和 UTF-8 有什么区别? 
  目前(2020 年)开发WINDOWS程序,用UNICODE还是多字节更实际? 
  为什么Unicode字符「」显示为苹果公司图标? 
  部分少数民族人士因姓名有间隔号(·)无法申请银行账户等,技术上有办法解决吗,需要多久? 

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





© 2024-05-19 - tinynew.org. All Rights Reserved.
© 2024-05-19 - tinynew.org. 保留所有权利