如何捕获所有鼠标事件?

永远的明日 2012-02-10 11:56:01
如题,我想捕获qt程序中所有widget鼠标事件(如:所有的QEvent::MouseButtonPress与QEvent::MouseButtonRelease)
根据文档所说,用qApp->installEventFilter(mainWin)来捕获,但这样好像有点问题
当我在主窗口右键创建一个menu,然后再点击(左键)主窗口的其它地方时,发现只产生了三了事件,第4个事件没有发生?
这是什么情况?
1、QEvent::MouseButtonPress
2、QEvent::MouseButtonRelease
3、QEvent::MouseButtonPress
4、QEvent::MouseButtonRelease
...全文
284 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
永远的明日 2012-02-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 loaden 的回复:]
你移到其他地方了,当然这个Release事件就没有了。
只能在释放的窗口上再处理,或者连接他的事件。
[/Quote]
按照文档所说,qApp->installEventFilter应该是能捕获当前程序所有widget的所的事件才是啊?
你说“Release事件 没有了”是怎么回事?按我的理解,release事件应该总会post到某一widget才是啊?
求大大指教!!
老邓 2012-02-11
  • 打赏
  • 举报
回复
你移到其他地方了,当然这个Release事件就没有了。
只能在释放的窗口上再处理,或者连接他的事件。
永远的明日 2012-02-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 pzhuyy 的回复:]

你在widget中重载这些事件不可以达到要求吗?
QEvent::MouseButtonPress, QEvent::MouseButtonRelease, QEvent::MouseButtonDblClick, or QEvent::MouseMove.

另外menu上是不是有一个Release处理了没有返回给widget.
[/Quote]
menu上是不是有一个Release处理了没有返回给widget.?
应该是先到过滤函数,再到menu的事件处理函数的呀?!现在的问题是过滤函数捕捉不到最后一个realse事件
pzhuyy 2012-02-10
  • 打赏
  • 举报
回复
你在widget中重载这些事件不可以达到要求吗?
QEvent::MouseButtonPress, QEvent::MouseButtonRelease, QEvent::MouseButtonDblClick, or QEvent::MouseMove.

另外menu上是不是有一个Release处理了没有返回给widget.

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧