The web and its immense success over the last 20 years had a major influence on technology. It has shaped how we serialize data, consume and provide services and how we develop HMIs. An up to date application framework needs to reflect this. This presentation will provide a survey of how this challenge is addressed by Qt. The presentation is split into three parts.
1) Consuming and interfacing with web-centric services and APIs from a Qt application. Applications that download additional information from a cloud-service or upload the result of their work into such a service are today’s norm. We will look into how REST/WebSocket-APIs can be used, also covering topics such as SSL, authentication, and authorization.
2) Implementing services and APIs to be consumed by other – web-centric systems – with Qt. There are a number of scenarios where a Qt application is providing (web)services itself. These include Qt being used headless on an embedded system to implement the backend for a web-based HMI, Qt being used on the server to make an established application accessible to the web, or giving testers (which prefer scripting languages) access to the internals of a Qt HMI. We will look at the upcoming QHttpServer module and the QWebSocketServer module provided by Qt.
3) HMI development. There are a number of scenarios where an HMI needs to run a web browser. This can either mean an HMI that is implemented using Web-technologies (by preference) or a Qt HMI needs to be run in a web browser. Scenarios include embedded devices without a display, giving remote access to HMIs and having an embedded web browser to display a web-based HMI, while the backend is implemented using Qt. We will look at Qt’s webgl-streaming, how to get an application to output VNC (which can be streamed into a browser) as well as what can be done with Qt for WebAssemby. For the embedded web browser scenario we will look at the Qt WebEngine and how to integrate business logic via QWebChannel.
For each of these three areas we will look into typical scenarios/problems and how to solve them with Qt. We will highlight where Qt really shines and where additional work is left to be done.