我试图在小部件中捕获鼠标发布事件,以确保鼠标先前被按在同一个小部件中。成功地调用了mouseReleaseEvent,但是我不知道如何处理参数QMouseEvent来检查鼠标的位置是否在小部件中。我现在的代码是:
void DeviceWidget::mouseReleaseEvent(QMouseEvent* e)
{
    if (_mouseClick)
    {
        _mouseClick = false;
        emit mouseClick(_deviceInformation);
    }
}非常感谢,
发布于 2013-09-30 15:30:04
您需要检查鼠标释放事件的本地位置是否在您的小部件中。我认为没有理由使用_mouseClick成员变量。只有当鼠标按下这个小部件时,才会调用此方法。当您按下按钮时,小部件开始跟踪鼠标,它将接收发布事件--不管鼠标是在哪里发布的。
void DeviceWidget::mouseReleaseEvent(QMouseEvent* e)
{
    if (rect().contains(e->localPos()->toPoint()) {
        emit mouseClick(_deviceInformation);
    }
}https://stackoverflow.com/questions/19097733
复制相似问题