- Qt 5.3
- Glossary Of QML Terms
- Qt 5.3.2 Reference Documentation

# Glossary Of QML Terms

## Common Terms

Term | Definition
--- | ---
QML | The language in which QML applications are written. The language architecture and engine are implemented by the Qt QML module.
Qt Quick | The standard library of types and functionality for the QML language, which is provided by the Qt Quick module, and may be accessed with "import QtQuick 2.3".

Type

In QML, a type may refer to either a Basic Type or a QML Object Type.

The QML language provides a number of built in (basic types), and the Qt Quick module provides various Qt Quick types for building QML applications. Types can also be provided by third-party developers through (modules) or by the application developer in the application itself through QML Documents.

See The QML Type System for more details.

Basic Type

A basic type is a simple type such as `int`, `string` and `bool`. Unlike object types, an object cannot be instantiated from a basic type; for example, it is not possible to create an `int` object with properties, methods, signals and so on.

Basic types are built into the QML language, whereas object types cannot be used unless the appropriate module is imported.

See The QML Type System for more details.

Object Type | A QML Object Type is a type that can be instantiated by the QML engine. A QML type can be defined either by a document in a .qml file beginning with a capital letter, or by a QObject-based C++ class. See The QML Type System for more details.
Object | A QML object is an instance of a QML Object Type. Such objects are created by the engine when it processes object declarations, which specify the objects to be created and the attributes that are to be defined for each object. Additionally, objects can be dynamically created at runtime through Component.createObject() and Qt.createQmlObject(). See also Lazy Instantiation.

Component

A component is a template from which a QML object or object tree is created. It is produced when a document is loaded by the QML engine. Once it has been loaded, it can be used to instantiate the object or object tree that it represents.

Additionally, the Component type is a special type that can can be used to declare a component inline within a document. Component objects can also be dynamically created through Qt.createComponent() to dynamically create QML objects.

Document

A QML Document is a self contained piece of QML source code that begins with one or more import statements and contains a single top-level object declaration. A document may reside in a .qml file or a text string.

If it is placed in a .qml file whose name begins with a capital letter, the file is recognized by the engine as a definition of a QML type. The top-level object declaration encapsulates the object tree that will be instantiated by the type.

Property

A property is an attribute of an object type that has a name and an associated value; this value can be read (and in most cases, also written to) externally.

An object can have one or more properties. Some properties are associated with the canvas (e.g., x, y, width, height, and opacity) while others may be data specific to that type (e.g., the "text" property of the Text type).

See QML Object Attributes for more details.

Binding | A binding is a JavaScript expression which is "bound" to a property. The value of the property at any point in time will be the value returned by evaluating that expression. See Property Binding for more details.

Signal

A signal is a notification from a QML object. When an object emits a signal, other objects can receive and process this signal through a signal handler.

Most properties of QML objects have a change signal, and also an associated change signal handler which may be defined by clients to implement functionality. For example, the "onClicked()" handler of an instance of the MouseArea type might be defined in an application to cause a sound to be played.

See Signal and Handler Event System for more details.

Signal Handler | A signal handler is the expression (or function) which is triggered by a signal. It is also known as a "slot" in C++. See Signal and Handler Event System for more details.
Lazy Instantiation | Object instances can be instantiated "lazily" at run-time, to avoid performing unnecessary work until needed. Qt Quick provides the Loader type to make lazy instantiation more convenient.