1// Copyright (C) 2023 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
7\brief The Qt Qml module implements the QML language and offers APIs to register
10The Qt Qml module provides a framework for developing applications and libraries
11with the \l{The QML Reference}{QML language}. It defines and implements the
12language and engine infrastructure, and provides an API to enable application
13developers to \l{Registering QML Types and QML Modules}{register} custom QML types
14and modules and integrate QML code with JavaScript and C++. The Qt Qml module
15provides both a \l{Qt QML QML Types}{QML API} and a
16\l{Qt Qml C++ Classes}{C++ API}.
18\section1 Using the Module
22\include {module-use.qdocinc} {using the qml api} {QtQml}
24The Qt QML module contains the QML framework and important QML types used in
25applications. The constructs of QML are described in the \l{The QML Reference}.
27The \l{Qt QML QML Types}{QML API} of the Qt QML module provides a number of
28\l{qtqml-typesystem-objecttypes.html}{QML Object Types},
29\l{qtqml-typesystem-valuetypes.html}{QML Value Types} and namespaces.
33\include {module-use.qdocinc} {using the c++ api}
35The C++ API contains some
36\l{Important C++ Classes Provided By The Qt QML Module}{important classes}
37you should get familiar with. It also provides
38\l{Integrating with JavaScript values from C++}{types} to hold JavaScript
41\section3 Building with CMake
43\include {module-use.qdocinc} {building with cmake} {Qml}
45To provide foreign QML type support for a non-QML library, locate
46the \c QmlIntegration module as follows:
48\snippet code/doc_src_qtqml.cmake 1
50See \l{qt6_generate_foreign_qml_types} for details.
52\section3 Building with qmake
54\include {module-use.qdocinc} {building_with_qmake} {qml}
56\section1 Registering QML Types and QML Modules
58In order to register types for usage with QML you first need to define a
59\l{Writing QML Modules}{QML module}, preferably using \l{qt_add_qml_module} in CMake.
60Then, you can add C++ headers to your new module, and
61\l{Defining QML Types from C++}{define types} to be
62\l{Exposing Attributes of C++ Types to QML}{exposed to QML} in them.
64\section1 Tweaking the engine
66There are a number of knobs you can turn to customize the behavior of the QML engine.
67The page on \l{Configuring the JavaScript Engine}{configuring the JavaScript engine}
68lists the environment variables you may use to this effect. The description of the
69\l{The QML Disk Cache}{QML Disk Cache} describes the options related to how your QML
70components are compiled and loaded.
72\section1 Articles and Guides
74These articles contain information about Qt Qml.
77 \li \l{The QML Reference}
78 \li \l{Qt Qml Tooling}
79 \li \l{Writing QML Modules}
80 \li \l{Singletons in QML}
86 \li \l {Qt QML C++ Classes} {C++ Classes}
87 \li \l {Qt QML QML Types} {QML Types}
90\section1 Licenses and Attributions
92Qt QML is available under commercial licenses from \l{The Qt Company}.
93In addition, it is available under free software licenses. Since Qt 5.4,
94these free software licenses are
95\l{GNU Lesser General Public License, version 3}, or
96the \l{GNU General Public License, version 2}.
97See \l{Qt Licensing} for further details.
99Furthermore Qt QML in Qt \QtVersion may contain third party
100modules under following permissive licenses:
102\generatelist{groupsbymodule attributions-qtqml}