C++ 如何获取应用程序的所有鼠标事件?

C++ 如何获取应用程序的所有鼠标事件?,c++,qt,C++,Qt,我正在尝试在我的应用程序上实现一个屏幕保护程序。每次空闲一段时间,应用程序就会播放一段视频。为了实现这一点,我使用了一个QTimer,它调用一个函数,每5分钟播放一次视频。问题是我需要在每次用户单击时重新启动计时器。目前,我正在尝试将我的应用程序的所有按钮点击连接到重启器插槽,但这显然不是实现这一点的最佳方法。 那么,如何抓取系统的所有鼠标事件来重新启动计时器呢?您可以在QApplication上安装一个程序来接收应用程序上发生的所有事件重新实现bool QWidget::x11Event(XE

我正在尝试在我的应用程序上实现一个屏幕保护程序。每次空闲一段时间,应用程序就会播放一段视频。为了实现这一点,我使用了一个QTimer,它调用一个函数,每5分钟播放一次视频。问题是我需要在每次用户单击时重新启动计时器。目前,我正在尝试将我的应用程序的所有按钮点击连接到重启器插槽,但这显然不是实现这一点的最佳方法。
那么,如何抓取系统的所有鼠标事件来重新启动计时器呢?

您可以在QApplication上安装一个程序来接收应用程序上发生的所有事件

重新实现
bool QWidget::x11Event(XEvent*event)
并且您可以接收系统范围内的X事件

是的,这是最好的方法,也很有效。最大的问题是,如果我过滤MousePress事件,它不会传播给我的所有小部件。我怎样才能解决这个问题?目前,我做了一个变通办法,用每个MouseMove重置计时器,而不是MousePress。不要过滤它,在eventFilter方法中返回false而不是true也值得一提的是,如果你的应用程序不处于活动状态,它将不会接收鼠标事件。这只适用于X11,不是每个平台解决方案也不是最实用的