summaryrefslogtreecommitdiffstats
path: root/src/interfaceframework/doc/src/qtif.qdoc
blob: 3230b73d179ae173f35d3dc395b782567832db36 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
// Copyright (C) 2021 The Qt Company Ltd.
// Copyright (C) 2019 Luxoft Sweden AB
// Copyright (C) 2018 Pelagicore AG
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
    \page interfaceframework-index.html
    \title Qt Interface Framework
    \brief Overview of the Qt Interface Framework Module

    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 \l{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:
    \list
    \li The \l{Qt Interface Framework Core C++ Classes}{core module} provides
    base classes and common code for all APIs created by you, the developer.
    \li The user created API definitions like a climate API or a
    mediaplayer API. Each of these APIs is the second building block called
    \e Features, which define the API exposed to the application developer.
    \li The last block consists of a \e{back-end interface} and one or more
    \e{back ends} implementing it to either connect to the underlying service
    or to a simulation of it.
    \endlist

    Qt Interface Framework is built around a pattern that separates the \e feature
    and the \b{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.

    \image qtinterfaceframework-overview.png "Qt Interface Framework Architecture"

    This pattern of separation is necessary to accommodate the following use cases:

    \table
    \row
        \li Early development
        \li This is where the UI can rely on a feature with a basic back end
        implementation.
    \row
        \li Testing and Simulation
        \li 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.
    \row
        \li Targets with different hardware configurations
        \li This is where certain parts of the system are represented by
        simulated back ends while others use a real hardware integration.
    \row
        \li Dynamic services
        \li Situations when services are only available intermittently, with
        back ends that come and go over time.
    \endtable

    \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.

    \section1 Overviews and Tutorials
    The following are some key topics that provide more details on the
    Qt Interface Framework module:

    \list
       \li \l{Installation}
       \li \l{Configuration}
       \li \l{Concepts and Architecture}
       \li \l{Get Started with the Qt Interface Framework Generator}
       \li \l{Qt Interface Framework Generator Tutorial}
       \li \l{Extending Qt Interface Framework}
       \li \l{What's New in the Qt Interface Framework}
    \endlist

    \section1 Reference APIs

    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.

    \list
    \li \l{Use the Qt Interface Framework Reference API}
    \li \l{QtInterfaceFramework Backends}
    \endlist

    \section1 Getting Started with the Qt Interface Framework Reference API

    \list
      \li \l {Qt Interface Framework Vehicle Functions C++ Classes#Getting Started}
             {Getting started with Qt Interface Framework Vehicle Functions (C++)}
      \li \l {Qt Interface Framework Vehicle Functions QML Types#Getting Started}
             {Getting started with Qt Interface Framework Vehicle Functions (QML)}
    \endlist

    \section1 Reference

    \list
      \li \l {Qt Interface Framework C++ Classes}
      \li \l {Qt Interface Framework QML Types}
      \li \l {Qt Interface Framework Examples}
    \endlist

    \section1 Licenses and Attributions

    Qt Interface Framework is available under commercial licenses from \l{The Qt Company}.
    In addition, it is available under the \l{GNU Lesser General Public License, version 3}, or
    See \l{Qt Licensing} for further details.

    An executable on Windows will potentially link against
    \l{The QtEntryPoint Library}. This library is available under commercial
    licenses and also under the \l{BSD 3-clause "New" or "Revised" License}.

    Furthermore Qt Interface Framework potentially contains third party modules
    under the following permissive licenses:

    \generatelist{groupsbymodule attributions-qtinterfaceframework}

*/