QWebengine拦截掉落事件

时间:2018-08-03 14:06:28

标签: c++ qt qwebengineview

背景
我移植了一个使用QWebEngine而不是QWebkit的应用程序。我有一个从QWebEngineView继承的包装器类。我希望能够将文件/文件夹拖放到此视图上,并将mimeData转换为JSON对象。然后,我想使用JSON数据重新放置一个新的DropEvent并丢弃原始的dropevent。

这曾经与QWebkit一起使用,但与QWebEngine一起使用时,当我调用基类dropEvent()时,原始的dropEvent正在通过,而自定义dropEvent不在HTML端。

代码段:

void CWebViewWrapper::dropEvent(QDropEvent *event)
{
    const QMimeData *mimeData = event->mimeData();
    QMimeData *newMimeData = new QMimeData();
    newMimeData->setText(generateJSON(mimeData));
    QDropEvent* newDropEvent = new QDropEvent(event->pos(), event->dropAction(), newMimeData, event->mouseButtons(), event->keyboardModifiers());
    event->setDropAction(Qt::DropAction::IgnoreAction);
    event->ignore(); //have tried accept() as well, same result
    //this JSON payload doesn't arrive, but the original dropEvent does
    QWebEngineView::dropEvent(newDropEvent);
}

结果:
结果是自定义JSON有效负载没有到达HTML端,并且QWebEngineView实际上导航到放置的文件夹。这种设置是否不再适用于QWebEngineView?

问题:
可以对这个概念进行调整以使其起作用吗?还是我必须放弃所有这些并走另一条路线? HTML具有多个放置区,因此我无法轻松地使用runJavascript()直接调用事件处理程序。

0 个答案:

没有答案