bool Widget::event(QEvent *event) { if (event->type()==QEvent::MouseButtonPress) { qDebug()<<"mouse press int event func"; return true; } else { return QWidget::event(event); } } void Widget::mousePressEvent(QMouseEvent *event) { qDebug()<<"mouse press event func"; }这段代码为什么在event函数中没有起到拦截鼠标点击事件的作用,还是会执行mousePressEvent函数
时间: 2024-02-13 08:07:26 浏览: 146
event:with具有asynciterator支持的严格类型的事件发射器
如果您的代码仍然无法拦截鼠标点击事件并阻止其继续传递,可能是因为您的 `Widget` 对象没有设置 `Qt::WA_AcceptTouchEvents` 标志。在某些情况下,Qt 会将触摸事件转换为鼠标事件,并且只有设置了 `Qt::WA_AcceptTouchEvents` 标志的窗口才能接收到触摸事件。
您可以通过以下方式设置 `Qt::WA_AcceptTouchEvents` 标志:
```
setAttribute(Qt::WA_AcceptTouchEvents);
```
这样,您的 `Widget` 对象就可以接收到触摸事件,并且在 `event` 函数中可以拦截鼠标点击事件并阻止其继续传递,而不会调用 `mousePressEvent` 函数。
阅读全文