当前位置:   article > 正文

QWebEngineView 无法获取鼠标事件QMouseEvent_qwebengineview安装事件过滤器无法监听鼠标事件

qwebengineview安装事件过滤器无法监听鼠标事件

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

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

  1. bool CWebEngineView::event(QEvent *event)
  2. {
  3. if(event->type() == QEvent::ChildAdded)
  4. {
  5. QChildEvent* childEvent = (QChildEvent*)event;
  6. if(childEvent)
  7. {
  8. QObject *child = childEvent->child();
  9. qDebug()<<"className"<<child->metaObject()->className();
  10. QOpenGLWidget *w =
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号