【问题标题】:QT Event ProblemQT 事件问题
【发布时间】:2011-08-11 02:38:44
【问题描述】:

我正在写一个qt程序,有以下需求。

当 30 秒没有任何点击时,锁定屏幕。如果有人在这 30 秒后再次点击,将他重定向到登录屏幕。

我已经阅读了关于事件的 qt 文档,并且我相信我需要方法 1 或 2 来处理鼠标事件。

1.在qApp上安装事件过滤器 qApp 上的事件过滤器监视发送到应用程序中所有对象的所有事件。

2.重新实现 QApplication::notify()。 Qt 的事件循环和 sendEvent() 调用这个函数来调度事件。通过重新实现它,您可以先于其他人看到事件。

它们对我来说似乎也很强大,但我不明白它们的区别。 哪一个适合我的要求?谢谢。

【问题讨论】:

    标签: c++ qt events


    【解决方案1】:

    除了 QApplication::notify(或其覆盖)将在之前调用任何可能在您的应用程序上的事件过滤器之外,您基本上可以使用任一解决方案实现相同的目的。 p>

    由于第一种方法不需要子类化 QApplication,它通常是首选方法。在您的情况下覆盖 QApplication::notify 的唯一原因是如果您由于其他原因需要覆盖它,例如因为你需要做任何与你自己的自定义事件相关的事情。

    但考虑到您的要求,我个人会选择以下解决方案:

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

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

    【讨论】:

      猜你喜欢
      • 2010-12-19
      • 2015-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-23
      • 2018-10-09
      • 2013-10-17
      • 1970-01-01
      相关资源
      最近更新 更多