QT QWebEnginePage :: setWebChannel () objeto de transporte

Estoy usando el marco QT WebEngine para mostrar páginas web. Estoy inyectando javascript en una página cuando se carga, y quiero permitir que javascript pueda acceder a un objeto QT. Aparentemente, para hacer esto, debe existir un QWebChannel que establezca algún IPC entre el cromo (el javascript) y el resto de mi proyecto C ++ / QT. Encontré la función QWebEnginePage :: setWebChannel (canal QWebChannel *), sin embargo, no puedo encontrar ningún ejemplo de su uso. La documentación (http://doc.qt.io/qt-5/qwebenginepage.html#setWebChannel) menciona que qt.webChannelTransport debería estar disponible en el contexto de JavaScript, pero no veo dónde se establece eso en qwebchannel.js (https://github.com/qtproject/qtwebchannel/blob/dev/src/webchannel/qwebchannel.js) He visto los ejemplos de WebChannel (http://doc.qt.io/qt-5/qtwebchannel-examples.html) y me gustaría evitar WebSockets si es posible.

A continuación se muestra cómo intenté implementar el canal web.

Cada vez que se carga una página, establezco un canal e inyecto el javascript en 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)

En Javascript:

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

Lo que da como resultado que el canal no se conecte correctamente (suponiendo que esto se deba a qt.webChannelTransport, ya que funcionaba cuando estaba usando WebSockets). También se agradece cualquier puntero a ejemplos de QWebChannel que se está configurando con QWebEnginePage de esta manera.

Respuestas a la pregunta(1)

Su respuesta a la pregunta