QT QWebEnginePage :: setWebChannel () транспортный объект

Я использую инфраструктуру QT WebEngine для отображения веб-страниц. Я вставляю javascript в страницу, когда она загружается, и хочу, чтобы javascript имел доступ к объекту QT. По-видимому, для этого должен существовать QWebChannel, который устанавливает IPC между хромом (javascript) и остальной частью моего проекта C ++ / QT. Я натолкнулся на функцию QWebEnginePage :: setWebChannel (QWebChannel * channel), однако не могу найти никаких примеров ее использования. Документация (http://doc.qt.io/qt-5/qwebenginepage.html#setWebChannel) упоминает, что qt.webChannelTransport должен быть доступен в контексте javascript, но я не вижу, где это установлено в qwebchannel.js (https://github.com/qtproject/qtwebchannel/blob/dev/src/webchannel/qwebchannel.js). Я видел примеры WebChannel (http://doc.qt.io/qt-5/qtwebchannel-examples.html) и хотел бы избежать WebSockets, если это возможно.

Ниже описано, как я пытался реализовать веб-канал.

Всякий раз, когда страница загружается, я устанавливаю канал и внедряю JavaScript в C ++:

QWebChannel *channel = new QWebChannel();
channel->registerObject(QStringLiteral("jshelper"), helper);

view->page()->runJavaScript(qwebjs); //this is qwebchannel.js
view->page()->setWebChannel(channel);
view->page()->runJavaScript(myfunction); //function that calls QT object (jshelper)

В Javascript:

new QWebChannel(qt.webChannelTransport, function(channel) { ... });

Это приводит к тому, что канал не подключается должным образом (при условии, что это из-за qt.webChannelTransport, так как он работал, когда я использовал WebSockets). Любые указатели на примеры настройки QWebChannel с помощью QWebEnginePage также приветствуются.

Ответы на вопрос(1)

Ваш ответ на вопрос