c++ 如何检查鼠标释放事件是否发生在小部件上

ergxz8rk  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(171)

我试图捕捉鼠标释放事件在一个小部件,确保鼠标以前按下同一小部件。mouseReleaseEvent被成功调用,但我不知道如何使用参数QMouseEvent来检查鼠标的位置是否在小部件内。当前代码:

  1. void DeviceWidget::mouseReleaseEvent(QMouseEvent* e)
  2. {
  3. if (_mouseClick)
  4. {
  5. _mouseClick = false;
  6. emit mouseClick(_deviceInformation);
  7. }
  8. }

非常感谢

nnsrf1az

nnsrf1az1#

您需要检查鼠标释放事件的本地位置是否在您的小部件中。我认为没有理由使用_mouseClick成员变量。只有当鼠标按在此小部件上时,才会调用此方法。当您按下按钮时,小部件开始跟踪鼠标,它将接收释放事件-无论鼠标在哪里释放。

  1. void DeviceWidget::mouseReleaseEvent(QMouseEvent* e)
  2. {
  3. if (rect().contains(e->localPos()->toPoint()) {
  4. emit mouseClick(_deviceInformation);
  5. }
  6. }

相关问题