目标:响应式多点触控矩形并嵌入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,这就是问题所在。并非每个网页按钮都会将中间按钮点击视为提交按钮点击。因此,我需要直接将左键单击传递给WebEngineView。但是,当我这样做时,应用程序会崩溃,因为多点触控区域首先将其视为触摸并再次发送到点击模拟中。 这会创建无限循环。
问题是: 如何将模拟的左键单击直接发送到WebEngineView?