Qt 5.5 WebEngineView和多点触控

Qt 5.5 WebEngineView and multitouch

本文关键字:多点 WebEngineView Qt      更新时间:2023-10-16

目标:内置WebEngineView的响应式多点触控矩形。

我正在制作多点触控网络浏览器。目前,我制作了一个带有多点触摸区域的矩形浏览器,该区域对应于一些带有矩形大小调整的多点触摸操作,并在短时间内通过runJavaScript函数向网页发送带有点击事件的javascript。但它有问题,例如谷歌表单拒绝js输入。所以我尝试在qt中构建点击模拟。

模拟器代码。

QMouseEvent * event1 = new QMouseEvent (QEvent::MouseButtonPress, QPoint(x,y),
    Qt::MiddleButton,
    Qt::MiddleButton,
    Qt::NoModifier   );
bool resp1  = QCoreApplication::sendEvent(mainWindow,event1);
QMouseEvent * event2 = new QMouseEvent (QEvent::MouseButtonRelease, QPoint(x,y),
    Qt::MiddleButton,
    Qt::MiddleButton,
    Qt::NoModifier   );
bool resp2  = QCoreApplication::sendEvent(mainWindow,event2);

它适用于某些情况,但并非所有情况。问题是mainWindow是ApplicationWindow,所以x是浏览器矩形的x+矩形中触摸的x,与y类似。

我在这个点击模拟中使用MiddleButton,这就是问题所在。并不是每个web按钮都会收到midle按钮点击作为提交点击。所以我需要通过左键直接点击到webengineview。但当我这样做的时候,应用程序崩溃了,因为multitoucharea首先接收到它作为触摸,然后再次发送一个来点击模拟。它创造了无限循环。

问题是:如何将模拟的左键单击直接发送到WebEngineView?

好的。。。我找到了答案。MultiPointTouchArea具有属性mouseEnabled。如果为false,则触摸组件将忽略鼠标事件。