我正在尝试在小部件中捕获鼠标释放事件,确保先前在同一小部件中按下了鼠标。 mouseReleaseEvent已成功调用,但我不知道如何处理参数QMouseEvent以检查鼠标的位置是否在窗口小部件内。我目前的代码:
void DeviceWidget::mouseReleaseEvent(QMouseEvent* e)
{
if (_mouseClick)
{
_mouseClick = false;
emit mouseClick(_deviceInformation);
}
}
非常感谢你,
答案 0 :(得分:5)
您需要检查鼠标释放事件的本地位置是否在您的窗口小部件中。我认为没有理由使用_mouseClick
成员变量。只有在此窗口小部件上按下鼠标时才会调用此方法。当您按下按钮时,小部件开始跟踪鼠标,它将接收释放事件 - 无论鼠标在何处被释放。
void DeviceWidget::mouseReleaseEvent(QMouseEvent* e)
{
if (rect().contains(e->localPos()->toPoint()) {
emit mouseClick(_deviceInformation);
}
}