2

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

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

太感谢了,

4

1 回答 1

5

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

void DeviceWidget::mouseReleaseEvent(QMouseEvent* e)
{
    if (rect().contains(e->localPos()->toPoint()) {
        emit mouseClick(_deviceInformation);
    }
}
于 2013-09-30T15:30:04.593 回答