1 /****************************************************************************
3 ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/
6 ** This file is part of the documentation of the Qt Toolkit.
8 ** $QT_BEGIN_LICENSE:FDL$
9 ** GNU Free Documentation License
10 ** Alternatively, this file may be used under the terms of the GNU Free
11 ** Documentation License version 1.3 as published by the Free Software
12 ** Foundation and appearing in the file included in the packaging of
16 ** Alternatively, this file may be used in accordance with the terms
17 ** and conditions contained in a signed written agreement between you
26 ****************************************************************************/
30 \brief The Qt QML module defines and implements the QML language
32 \section1 Overview Of The Qt QML Module
34 The Qt QML module provides a framework for developing applications. It defines
35 and implements the QML language, and provides API which allows clients to
36 extend the QML language with more types, and to integrate QML code with
39 Application developers who are interested in writing applications using QML
40 should start by reading the \l{qtquick-applicationdevelopers.html}
41 {QML Application Developer Resources}.
45 QML is a user-interface specification and programming language. It was
46 designed specifically to enable and ease the development of modern,
47 touch-driven, fluidly animated and visually-appealling applications.
49 One of the core goals of QML is to allow closer interaction between designers
50 and programmers during the development of an application.
52 \section2 What Does The Qt QML Module Provide
54 The Qt QML module provides the definition and an implementation of the QML
55 language. It uses a JavaScript engine to provide JavaScript integration, and
56 provides C++ API to provide integration with C++. It provides a framework for
57 object instantiation and manipulation along with strong typing, which can be
58 integrated with a visual canvas and an animation framework to enable the
59 development of highly-appealling interactive applications.
61 \section2 What Does The Qt QML Module Not Provide
63 It does not provide a visual canvas, visual items, or an animation framework.
64 These are provided instead by the \l{QtQuick} module.
66 Qt Quick can be thought of as the "standard library" of types (including visual
67 types, animation classes, and canvas integration) for the QML language.
70 \section1 Qt QML Module Documentation
73 \li \l{qtqml-cppclasses-topic.html}{C++ Classes Provided By The Qt QML Module}
75 \li \l{qtqml-cppclasses-engine.html}{QQmlEngine}
76 \li \l{qtqml-cppclasses-context.html}{QQmlContext}
77 \li \l{qtqml-cppclasses-component.html}{QQmlComponent}
80 \li \l{qtqml-typesystem-topic.html}{The QML Type System}
82 \li \l{qtqml-typesystem-topic.html}{Basic Types}
83 \li \l{qtqml-typesystem-topic.html#javascript-types}{JavaScript Types}
84 \li \l{qtqml-typesystem-topic.html#qml-object-types}{QML Object Types}
86 \li \l{qtqml-documents-definetypes.html}{Defining Object Types from QML}
87 \li \l{qtqml-cppintegration-registercpptypes.html}{Defining Object Types from C++}
91 \li \l{qtqml-modules-topic.html}{QML Modules}
93 \li \l{qtqml-modules-topic.html#syntax-of-a-qmldir-file}{Packaging QML and JavaScript Files}
94 \li \l{qtqml-modules-cppplugins.html#creating-a-plugin}{Providing Types and Functionality in a C++ Plugin}
95 \li \l{qtqml-modules-qmldir.html}{Syntax of a qmldir File}
98 \li \l{qtqml-documents-topic.html}{QML Documents}
100 \li \l{qtqml-documents-structure.html}{Structure of a QML Document}
101 \li \l{qtqml-syntax-basics.html}{Syntax of the QML Language}
102 \li \l{qtqml-documents-definetypes.html}{Defining Object Types through QML Documents}
104 \li \l{qtqml-documents-definetypes.html#defining-an-object-type-with-a-qml-file}{Defining an Object Type with a QML File}
105 \li \l{qtqml-documents-definetypes.html#accessible-attributes-of-custom-types}{Accessible Attributes of Custom Types}
107 \li \l{qtqml-documents-networktransparency.html}{Resource Loading and Network Transparency}
108 \li \l{qtqml-documents-scope.html}{Scope and Naming Resolution}
111 \li \l{qtqml-typereference-topic.html}{QML Types Provided by the Qt QML Module}
113 \li \l{qtqml-typereference-topic.html#qtobject}{QtObject}
114 \li \l{qtqml-typereference-topic.html#component}{Component}
117 \li \l{qtqml-javascript-topic.html}{Integrating QML and JavaScript}
119 \li \l{qtqml-javascript-expressions.html}{Using JavaScript Expressions with QML}
120 \li \l{qtqml-javascript-imports.html}{Importing JavaScript Files in QML Documents}
121 \li \l{qtqml-javascript-hostenvironment.html}{JavaScript Host Environment}
123 \li \l{qtqml-javascript-qmlglobalobject.html}{QML Global Object}
124 \li \l{qtqml-javascript-functionlist.html}{List of JavaScript Objects and Functions}
128 \li \l{qtqml-cppintegration-topic.html}{Integrating QML and C++}
130 \li \l{qtqml-cppintegration-registercpptypes.html}{Defining QML Object Types from C++}
131 \li \l{qtqml-cppintegration-data.html}{Exposing C++ Data to QML}
132 \li \l{qtqml-cppintegration-functions.html}{Exposing C++ Functionality to QML}
133 \li \l{qtqml-cppintegration-reverse.html}{Interacting with Objects defined in QML from C++}
139 \section1 Syntax of the QML Language
142 \li \l{qtqml-syntax-basics.html}{QML Syntax Basics}
144 \li \l{qtqml-syntax-imports.html}{Import Statements}
145 \li \l{qtqml-syntax-basics.html#object-declarations}{Object Declarations}
147 \li \l{qtqml-syntax-basics.html#child-objects}{Child Objects}
149 \li \l{qtqml-syntax-basics.html#comments}{Comments}
152 \li \l{qtqml-syntax-objectattributes.html}{QML Object Attributes}
154 \li \l{qtqml-syntax-objectattributes.html#the-id-assignment}{The \e id Assignment}
155 \li \l{qtqml-syntax-objectattributes.html#property-initialization}{Property Initialization}
156 \li \l{qtqml-syntax-objectattributes.html#custom-properties}{Custom Properties}
157 \li \l{qtqml-syntax-objectattributes.html#signal-handlers}{Signal Handlers}
158 \li \l{qtqml-syntax-objectattributes.html#custom-signals}{Custom Signals}
159 \li \l{qtqml-syntax-objectattributes.html#custom-methods}{Custom Methods}
160 \li \l{qtqml-syntax-objectattributes.html#attached-properties-and-attached-signal-handlers}{Attached Properties and Attached Signal Handlers}
163 \li \l{qtqml-syntax-propertybinding.html}{Property Binding}
164 \li \l{qtqml-syntax-signals.html}{Signal and Handler Event System}
167 \section1 Reference Documentation
169 More information about the Qt QML module is contained within the class and
170 function documentation of the \l{qtqml-apireference.html}
171 {Qt QML Module API Reference}. The QML types provided by the Qt QML module
172 are listed in the \l{qtqml-typereference-topic.html}
173 {Qt QML Module QML Type Reference} page.
175 Application developers who are interested in writing applications using QML
176 should start by reading the \l{qtquick-applicationdevelopers.html}
177 {QML Application Developer Resources}. The documentation for the
178 \l{qtquick-main.html}{QtQuick} module is also an indispensible resource for
179 application developers, as it provides the standard library of QML types which
180 application developers will use in their applications.
184 \li \l{qtqml-typereference-topic.html}{Qt QML Module QML Type Reference}
185 \li \l{qtqml-module.html}{Qt QML Module C++ API Reference}
186 \li \l{qtquick-main.html}{Qt Quick Module Documentation}
187 \li \l{qtquick-applicationdevelopers.html}{QML Application Developer Resources}
188 \li \l{qtqml-releasenotes.html}{QtQml Release Notes}