### Introduction The Qt WebChannel module offers Qt applications a seamless way to publish `QObjects` for interaction with HTML/JavaScript clients. These clients can either be inside local Qt `WebView`s or any other, potentially remote, client which supports JavaScript, as long as a communication channel such as WebSocket is available. Qt WebChannel uses introspection on the `QObject`s and sends this serialized data to the clients. There, with the help of a small JavaScript library, an object is created which simulates the API of the `QObject`. Any invokable methods, including slots, can be called as well as properties read and written. Additionally you can connect to signals and register JavaScript callbacks as handlers. ### Dependencies This module depends on Qt Core only. Optionally, an additional plugin for Qt Quick can be built, which makes it easy to use a `QWebChannel` from QML. Note that this module alone is not functional. It is being used in e.g. Qt WebKit to provide a seamless integration of QML/C++ QObjects into JavaScript clients. You can integrate it in your projects as well, by providing an implementation of the `QWebChannelAbstractTransport` class, see the `standalone` example for how to do this. ### Building qmake-qt5 make make install ### Usage from C++ To use the Qt/C++ library, add the following to your `QMake` project: QT += webchannel Then, in your C++ code, construct a webchannel, then publish your `QObject`s: QWebChannel channel; channel.registerObject(QStringLiteral("foo"), myFooObj); .... Additionally, you need to provide a communication channel to the HTML client. One way is to use the Qt WebSockets module. On the HTML/JavaScript client side, you need to embed `src/webchannel/qwebchannel.js` and setup the connection to a client-side transport. An example which shows all this in action can be found in `examples/standalone`. ### Usage from Qt Quick For QML applications, use the following import: import QtWebChannel 1.0 Then setup the WebChannel, register objects to it and connect to transport objects: WebChannel { registeredObjects: [foo, bar, ...] transports: [yourTransport] } To see this in action, take a look at the test code in `tests/auto/qml`.