代码之家  ›  专栏  ›  技术社区  ›  Jake Petroules

如何在Qt中检测用户不活动?

  •  5
  • Jake Petroules  · 技术社区  · 14 年前

    如何在Qt QMainWindow中检测用户不活动?到目前为止,我的想法是使用一个QTimer来递增一个计数器,如果传递了某个值,它就会锁定应用程序。任何鼠标或键的交互都应该将计时器设置回0。然而,我需要知道如何正确处理输入事件复位;我可以重新实现:

    virtual void keyPressEvent(QKeyEvent *event)
    virtual void keyReleaseEvent(QKeyEvent *event)
    virtual void mouseDoubleClickEvent(QMouseEvent *event)
    virtual void mouseMoveEvent(QMouseEvent *event)
    virtual void mousePressEvent(QMouseEvent *event)
    virtual void mouseReleaseEvent(QMouseEvent *event)
    

    2 回复  |  直到 14 年前
        1
  •  11
  •   Greg S    14 年前

    class MyEventFilter : public QObject
    {
      Q_OBJECT
    protected:
      bool eventFilter(QObject *obj, QEvent *ev)
      {
        if(ev->type() == QEvent::KeyPress || 
           ev->type() == QEvent::MouseMove)
             // now reset your timer, for example
             resetMyTimer();
    
        return QObject::eventFilter(obj, ev);
      }
    }
    

    然后使用类似

    MyApplication app(argc, argv);
    MyEventFilter filter;
    app.installEventFilter(&filter);
    app.exec();
    

    这绝对有效(我自己也试过)。

    编辑:非常感谢ereOn指出我之前的解决方案不是很有用。

        2
  •  0
  •   user2054758    14 年前