当前位置:   article > 正文

QWebEngineView捕获不到鼠标事件问题解决_vs+qtqwebengineview安装鼠标点击事件过滤

vs+qtqwebengineview安装鼠标点击事件过滤

在 Qt 例子中(Examples/Qt-5.15.0/webenginewidgets/simplebrowser)重写webview::mouseReleaseEvent() 发现鼠标点击网页之后,并没有执行这个函数。

通过Google发现这个问题是存在的,不仅鼠标事件捕捉不到,paint事件等也捕获不到,https://stackoverflow.com/questions/30566101/how-can-i-get-paint-events-with-qtwebengine

通过安装事件过滤器来捕获:

  1. 构造函数中
QApplication::instance()->installEventFilter(this);
  • 1
  1. 重写eventFilter
bool WebView::eventFilter(QObject *object, QEvent *event)
{
    if(object->parent() == this)
    {
        QEvent::Type et = event->type();
        switch(et)
        {
        case QEvent::MouseButtonPress:
            mousePressEvent(static_cast<QMouseEvent *>(event));
	    break;
        case QEvent::MouseButtonRelease:
            mouseReleaseEvent(static_cast<QMouseEvent *>(event));
	    break;
        case QEvent::MouseMove:
            mouseMoveEvent(static_cast<QMouseEvent *>(event));
	    break;
	default:
            break;
        }
    }
    return false;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

以上两步解决问题。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/839043
推荐阅读
相关标签
  

闽ICP备14008679号