QWidget, как обнаружить движение мыши - PullRequest
0 голосов
/ 14 февраля 2019

Я могу что-то сделать, когда мышь движется, переписав функцию QWidget mouseMoveEvent.

Но я хочу сделать что-то в тот момент, когда мышь перестает двигаться.Как я могу это реализовать?

1 Ответ

0 голосов
/ 14 февраля 2019

Я бы порекомендовал использовать однократный 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;
};
...