c++ - QT事件问题

标签 c++ qt events

我正在编写一个 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 的唯一原因是您是否由于其他原因需要覆盖它,例如因为您需要做任何与您自己的自定义事件相关的事情。

但根据您的要求,我个人会选择以下解决方案:

  1. 在 qApp 上安装事件过滤器
  2. 创建一个间隔为 30 秒的计时器
  3. 连接定时器的锁屏方法
  4. 让您的事件过滤器在每次检测到鼠标按下时重置计时器。

根据您的应用程序,您可能还需要查找 KeyPress 事件,也许还需要查找 MouseMove 事件。

关于c++ - QT事件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7020240/

相关文章:

c++ - 唯一形式算法和列表容器的唯一有什么区别?

c++ - 如何将一个非常大的二进制数转换为十进制数?

c++ - 将自定义 QMetaType 与 QDataStream 结合使用

c++ - 管理异步通信: how to examine response received in another thread

java - 微服务广播消息

c++ - 递归函数错误 : "-var-create: unable to create variable object"

c++ - 使用 QJsonDocument 将子字符串解析为 JSON

c# - 如何使用 InvokeCommandAction 调用我的方法并传入参数?

events - AppleScript 可以监听事件吗?

c++ - "operator bool() const"是什么意思