Qt 5.5 WebEngineView 和多点触控
Posted
技术标签:
【中文标题】Qt 5.5 WebEngineView 和多点触控【英文标题】:Qt 5.5 WebEngineView and multitouch 【发布时间】:2015-12-03 11:53:07 【问题描述】:目标:内部带有 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 按钮都接收中间按钮单击作为提交单击。所以我需要将左键单击直接传递给 webengineview。但是当我做这个应用程序崩溃时,因为 multitoucharea 首先接收它作为触摸并再次发送一个点击模拟。它创建了无限循环。
问题是: 如何将模拟的左击直接发送到 WebEngineView?
【问题讨论】:
HOTFIX [临时]。在我运行 click simylator 之前,禁用 toucharea,然后使用 click 模拟器操作,启用 toucharea。这不是一个好的解决方案,但它现在可以工作。 【参考方案1】:好的...我找到了答案。 MultiPointTouchArea 具有属性 mouseEnabled。当为 false 时,触摸组件将忽略鼠标事件。
【讨论】:
以上是关于Qt 5.5 WebEngineView 和多点触控的主要内容,如果未能解决你的问题,请参考以下文章
Qt/QML:WebEngineView 和 ScrollView