我正在编写一个 qt 程序并且有以下需求。
30 秒后没有任何点击,锁定屏幕。如果有人在这 30 秒后再次点击,将他重定向到登录屏幕。
我已经阅读了有关事件的 qt 文档,我相信我需要方法 1 或方法 2 来处理鼠标事件。
1.Installing an event filter on qApp An event filter on qApp monitors all events sent to all objects in the application.
2.Reimplementing QApplication::notify(). Qt's event loop and sendEvent() call this function to dispatch events. By reimplementing it, you get to see events before anybody else.
它们在我看来也很强大,但我不明白它们的区别。 哪一个适合我的要求?谢谢。
最佳答案
除了 QApplication::notify(或其覆盖)将在之前可能在您的应用程序中的任何事件过滤器之外,您基本上可以使用任何一种解决方案实现相同的目的。
由于第一种方法不需要对 QApplication 进行子类化,因此它通常是首选方法。在您的情况下覆盖 QApplication::notify 的唯一原因是您是否由于其他原因需要覆盖它,例如因为您需要做任何与您自己的自定义事件相关的事情。
但根据您的要求,我个人会选择以下解决方案:
- 在 qApp 上安装事件过滤器
- 创建一个间隔为 30 秒的计时器
- 连接定时器的锁屏方法
- 让您的事件过滤器在每次检测到鼠标按下时重置计时器。
根据您的应用程序,您可能还需要查找 KeyPress 事件,也许还需要查找 MouseMove 事件。
关于c++ - QT事件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7020240/