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