QWidget如何检测鼠标停止移动
QWidget how to detect mouse stop moving
我可以通过覆盖 QWidget 的 mouseMoveEvent 函数在鼠标移动时做一些事情。
但是我想在鼠标停止移动的那一刻做点什么。我该如何实施?
我建议使用每次调用 mouseMoveEvent
时重新启动的单次 QTimer
。将超时设置为您选择的某个阈值。例如:
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;
};
我可以通过覆盖 QWidget 的 mouseMoveEvent 函数在鼠标移动时做一些事情。
但是我想在鼠标停止移动的那一刻做点什么。我该如何实施?
我建议使用每次调用 mouseMoveEvent
时重新启动的单次 QTimer
。将超时设置为您选择的某个阈值。例如:
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;
};