Qt 5.5 WebEngineView 和多点触控

3

目标:响应式多点触控矩形并嵌入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?


热修复 [临时]。在运行点击模拟器之前,禁用触摸区域,使用点击模拟器动作后,启用触摸区域。这不是一个好的解决方案,但现在它能够工作。 - Jakub Kosecki
1个回答

1

好的...我找到了答案。 MultiPointTouchArea有一个属性mouseEnabled。当为false时,触摸组件会忽略鼠标事件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接