QWebEngineView 无法获取鼠标事件QMouseEvent

最近有个需求,需要在QWebEngineView加载网页后模拟一个点击,直接创建一个QMouseEvent同过QApplication::sendEvent或者QApplication::postEvent发送给QWebEngineView,发现QWebEngineView中没有执行QWebEngineView::mousePressEvent和QWebEngineView::mouseReleaseEvent,通过查找资料,发现QWebEngineView在加载界面后,被本身的child接收了改事件

解决办法:同过重载event,截取QEvent::ChildAdded事件,通过智能指针QPointer<QOpenGLWidget>保存这个child指针(类型QOpenGLWidget),我们可以通过send鼠标信号到这个child即可模拟正常的鼠标点击事件


bool CWebEngineView::event(QEvent *event)
{
    if(event->type() == QEvent::ChildAdded)
    {
        QChildEvent* childEvent = (QChildEvent*)event;
        if(childEvent)
        {
            QObject *child = childEvent->child();
            qDebug()<<"className"<<child->metaObject()->className();
            QOpenGLWidget *w = qobject_cast<QOpenGLWidget*>(child);
            if (w)
            {
                //do something
                qDebug()<<"w className"<<w->metaObject()->className();
            }
        }
    }
    return QWebEngineView::event(event);
}

 

 

 

参靠资料:https://stackoverflow.com/questions/30566101/how-can-i-get-paint-events-with-qtwebengine

展开阅读全文
©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值