Qt Interface Framework
The Qt Interface Framework module provides both the tools and the core APIs, for you to implement Middleware APIs, Middleware Back ends, and Middleware Services. The Qt Interface Framework Generator provides a flexible way to define new APIs via an Interface Definition Language (IDL) and generate classes for use, from C++ and QML.
Qt Interface Framework consists of three types of building blocks:
- The core module provides base classes and common code for all APIs created by you, the developer.
- The user created API definitions like a climate API or a mediaplayer API. Each of these APIs is the second building block called Features, which define the API exposed to the application developer.
- The last block consists of a back-end interface and one or more back ends implementing it to either connect to the underlying vehicle or do a simulation of it.
Qt Interface Framework is built around a pattern that separates the feature and the back ends.
There can be multiple back ends per feature; the Core module provides support for easily finding the corresponding back end.
The following diagram illustrates the generic architecture in Qt Interface Framework: Middleware API, Middleware Back end, and Middleware Service.
This pattern of separation is necessary to accommodate the following use cases:
|Early development||This is where the UI can rely on a feature with a basic back end implementation.|
|Testing and Simulation||This is where the back ends can be tested separately from the app and the app can be tested using a specialized testing back end.|
|Targets with different hardware configurations||This is where certain parts of the system are represented by simulated back ends while others use a real hardware integration.|
|Dynamic services||Situations when services are only available intermittently, with back ends that come and go over time.|
Note: There is no compatibility guarantee for the autogenerated code. This means that even application code that uses the autogenerated code is only guaranteed to work with the Qt Interface Framework version it was developed against. We try to keep the API source compatible for as long as possible.
Overviews and Tutorials
The following are some key topics that provide more details on the Qt Interface Framework module:
- Concepts and Architecture
- Get Started with the Qt Interface Framework Generator
- Qt Interface Framework Generator Tutorial
- Extending Qt Interface Framework
In addition to the tools and core APIs, the Qt Interface Framework module also provides an extendable set of reference APIs for automotive features. This module can be used to develop automotive applications and to provide automotive features to Qt-based applications in a structured manner. This reference API already contains some simulation back ends, which provide partially simulated behavior of a real middleware service.
Note: There is no compatibility guarantee for the reference APIs. As those are based on the Qt Interface Framework Generator, the same compatibility guarantee is applied to those. We try to keep the API source compatible for as long as possible.
Getting Started with the Qt Interface Framework Reference API
- Getting started with Qt Interface Framework Vehicle Functions (C++)
- Getting started with Qt Interface Framework Vehicle Functions (QML)
Licenses and Attributions
Qt Interface Framework is available under commercial licenses from The Qt Company. In addition, it is available under the GNU Lesser General Public License, version 3, or See Qt Licensing for further details.
An executable on Windows will potentially link against The QtEntryPoint Library. This library is available under commercial licenses and also under the BSD 3-clause "New" or "Revised" License.
Furthermore Qt Interface Framework potentially contains third party modules under the following permissive licenses:
Lesser GNU General Public License and Mozilla Public License
© 2023 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.