qt - QWidget如何检测鼠标停止移动

标签 qt qwidget qmouseevent

通过覆盖QWidget的mouseMoveEvent函数,我可以在鼠标移动时做一些事情。

但是我想在鼠标停止移动的那一刻做点什么。我该如何实现这个?

最佳答案

我建议使用单次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;
};

关于qt - QWidget如何检测鼠标停止移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54680565/

相关文章:

c++ - QStateMachine - QMouseEvent

mysql - 简单的只读锁定机制

c++ - 在 Qt 中设置 GUI 线程的优先级

python - 使用 PyQt4 的空白窗口

qt - 我如何知道我的 Widget 是否被其他应用程序遮挡或对用户可见?

c++ - 如何更改 Qt 中的窗口标题和中央小部件?

qt - 我可以在 QGraphicsItem 中获取鼠标事件吗?

c++ - 在 MousePressEvent 中使用 QDialog

qt - 使用OpenSSL链接编译Qt5时出错

xml - 有没有办法让 XmlListModel 不显示 XmlRole 为空的项目?