QWidget如何检测鼠标停止移动

时间:2019-02-13 22:39:58

标签: qt qwidget qmouseevent

当鼠标移动时,我可以通过覆盖QWidget的mouseMoveEvent函数来执行某些操作。

但是当鼠标停止移动时,我想做些事情。我该如何实施?

1 个答案:

答案 0 :(得分:1)

我建议使用单次QTimer,每次调用mouseMoveEvent时都要重新启动。将超时设置为您选择的某个阈值。例如:

class Widget : public QWidget
{
public:
  Widget(QWidget *parent = nullptr)
    : QWidget(parent)
  {
    setMouseTracking(true);
    mTimer.setInterval(500);
    mTimer.setSingleShot(true);
    connect(&mTimer, &QTimer::timeout, [] {
      qDebug("Mouse stopped moving!!!");
    });
  }

  void mouseMoveEvent(QMouseEvent *event) override
  {
    mTimer.start();
  }

private:
  QTimer mTimer;
};