我正在尝试在小部件中捕获鼠标释放事件,以确保先前在同一小部件中按下了鼠标。 mouseReleaseEvent 已成功调用,但我不知道如何处理参数 QMouseEvent 来检查鼠标的位置是否在小部件内。我当前的代码:
void DeviceWidget::mouseReleaseEvent(QMouseEvent* e)
{
if (_mouseClick)
{
_mouseClick = false;
emit mouseClick(_deviceInformation);
}
}
非常感谢,
最佳答案
您需要检查鼠标释放事件的本地位置是否在您的小部件内。我认为没有理由使用 _mouseClick
成员变量。仅当鼠标按下此小部件时才会调用此方法。当您按下按钮时,小部件开始跟踪鼠标,并且它会收到释放事件 - 无论鼠标在何处释放。
void DeviceWidget::mouseReleaseEvent(QMouseEvent* e)
{
if (rect().contains(e->localPos()->toPoint()) {
emit mouseClick(_deviceInformation);
}
}
关于c++ - 如何检查小部件上是否发生了鼠标释放事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19097733/