QWebengine Intercept Drop Event

Фон:
Я портировал приложение, чтобы использовать QWebEngine вместо QWebkit. У меня есть класс-оболочка, который наследуется от QWebEngineView. Я хотел бы иметь возможность перетаскивать файлы / папки в это представление и переводить mimeData в объект JSON. Затем я хочу перетащить новое DropEvent с данными JSON и отбросить оригинальное 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

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]