如何检查窗口小部件上是否发生了鼠标释放事件

时间:2013-09-30 15:12:11

标签: c++ qt

我正在尝试在小部件中捕获鼠标释放事件,确保先前在同一小部件​​中按下了鼠标。 mouseReleaseEvent已成功调用,但我不知道如何处理参数QMouseEvent以检查鼠标的位置是否在窗口小部件内。我目前的代码:

void DeviceWidget::mouseReleaseEvent(QMouseEvent* e)
{
    if (_mouseClick)
    {
        _mouseClick = false;
        emit mouseClick(_deviceInformation);
    }
}

非常感谢你,

1 个答案:

答案 0 :(得分:5)

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

void DeviceWidget::mouseReleaseEvent(QMouseEvent* e)
{
    if (rect().contains(e->localPos()->toPoint()) {
        emit mouseClick(_deviceInformation);
    }
}