aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/doc/src/qmllanguageref/typesystem/objecttypes.qdoc
diff options
context:
space:
mode:
authorJerome Pasion <jerome.pasion@digia.com>2013-04-17 17:19:35 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-04-23 12:53:48 +0200
commit32c54e57098b6799f41a3654a670a68619922f9e (patch)
tree86cf70e109e4a19628547d96e7fb13f6f2c46991 /src/qml/doc/src/qmllanguageref/typesystem/objecttypes.qdoc
parent28b6c39af1c3e919e83ddace18a5252c4423431b (diff)
Doc: Refactored and focused the Qt QML documentation.
Before it wasn't clear to what the module provided, especially with the coupling of Qt QML and Qt Quick. The doc is centered around these documentation: -QML refernce: the language syntax and the application constructs -JavaScript environment: the environment provided by the module -Integration with C++: more about the engine and the C++ API -QML Types and Classes reference (created by \qmlmodule and \module) The distinction are made in the directory and the section titles in the Qt QML landing page. Change-Id: I033bfcbf8368b94ffa5ee4b1225bee74347f53eb Reviewed-by: Martin Smith <martin.smith@digia.com>
Diffstat (limited to 'src/qml/doc/src/qmllanguageref/typesystem/objecttypes.qdoc')
-rw-r--r--src/qml/doc/src/qmllanguageref/typesystem/objecttypes.qdoc132
1 files changed, 132 insertions, 0 deletions
diff --git a/src/qml/doc/src/qmllanguageref/typesystem/objecttypes.qdoc b/src/qml/doc/src/qmllanguageref/typesystem/objecttypes.qdoc
new file mode 100644
index 0000000000..9209ebe68e
--- /dev/null
+++ b/src/qml/doc/src/qmllanguageref/typesystem/objecttypes.qdoc
@@ -0,0 +1,132 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Free Documentation License Usage
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file. Please review the following information to ensure
+** the GNU Free Documentation License version 1.3 requirements
+** will be met: http://www.gnu.org/copyleft/fdl.html.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+/*!
+\page qtqml-typesystem-objecttypes.html
+\title QML Object Types
+\brief describes QML object types and how to create them
+
+
+A QML object type is a type from which a QML object can be instantiated.
+
+In syntactic terms, a QML object type is one which can be used to declare an
+object by specifying the \e{type name} followed by a set of curly braces that
+encompasses the attributes of that object. This differs from \e {basic types},
+which cannot be used in the same way. For example, \l Rectangle is a QML object
+type: it can be used to create \c Rectangle type objects. This cannot be done
+with primitive types such as \c int and \c bool, which are used to hold simple
+data types rather than objects.
+
+Custom QML object types can be defined by creating a .qml file that defines the
+type, as discussed in \l {qtqml-documents-definetypes.html}
+{Documents as QML object type definitions}, or by defining a QML type from C++
+and registering the type with the QML engine, as discussed in
+\l{qtqml-cppintegration-definetypes.html}{Defining QML Types from C++}.
+
+
+\section1 Defining Object Types from QML
+
+
+\section2 Defining Object Types through QML Documents
+
+Plugin writers and application developers may provide types defined as QML
+documents. A QML document, when visible to the QML import system, defines a
+type identified by the name of the file minus the file extensions.
+
+Thus, if a QML document named "MyButton.qml" exists, it provides the definition
+of the "MyButton" type, which may be used in a QML application.
+
+See the documentation about \l{QML Documents} for
+information on how to define a QML document, and the syntax of the QML
+language. Once you are familiar with the QML language and how to define QML
+documents, see the documentation which explains how to
+\l{qtqml-documents-definetypes.html}
+{define and use your own reusable QML types in QML documents}.
+
+See \l {Defining Object Types through QML Documents} for more information.
+
+
+
+\section2 Defining Anonymous Types with Component
+
+Another method of creating object types from within QML is to use the \l Component type.
+This allows a type to be defined inline within a QML document, instead of using a separate
+document in a \c .qml file.
+
+\qml
+Item {
+ id: root
+ width: 500; height: 500
+
+ Component {
+ id: myComponent
+ Rectangle { width: 100; height: 100; color: "red" }
+ }
+
+ Component.onCompleted: {
+ myComponent.createObject(root)
+ myComponent.createObject(root, {"x": 200})
+ }
+}
+\endqml
+
+Here the \c myComponent object essentially defines an anonymous type that can be instantiated
+using \l {Component::createObject} to create objects of this anonymous type.
+
+
+Inline components share all
+the characteristics of regular top-level components and use the same \c import
+list as their containing QML document.
+
+
+
+Note that each \l Component object declaration creates its own \e {component scope}. Any
+\e id values used and referred to from within a \l Component object declaration must be
+unique within that scope, but do not need to be unique within the document within which the
+inline component is declared. So, the \l Rectangle declared in the \c myComponent object
+declaration could have an \e id of \c root without conflicting with the \c root declared
+for the \l Item object in the same document, as these two \e id values are declared within
+different component scopes.
+
+See \l{qtqml-documents-scope.html}{Scope and Naming Resolution} for more details.
+
+
+\section1 Defining Object Types from C++
+
+C++ plugin writers and application developers may register types defined in C++
+through API provided by the Qt QML module. There are various registration
+functions which each allow different use-cases to be fulfilled.
+For more information about those registration functions, and the specifics of
+exposing custom C++ types to QML, see the documentation regarding
+\l{qtqml-cppintegration-definetypes.html}{Defining QML Types from C++}.
+
+The QML type-system relies on imports, plugins and extensions being installed
+into a known import path. Plugins may be provided by third-party developers
+and reused by client application developers. Please see the documentation
+about \l{qtqml-modules-topic.html}{QML modules} for more information about
+how to create and deploy a QML extension module.
+
+*/