QWidget, как обнаружить движение мыши
Я могу что-то сделать, когда мышь движется, переписав функцию QWidget mouseMoveEvent.
Но я хочу сделать что-то в тот момент, когда мышь перестает двигаться. Как я могу это реализовать?
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;
};