summaryrefslogtreecommitdiffstats
path: root/doc/src/declarative/qmlevents.qdoc
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src/declarative/qmlevents.qdoc')
-rw-r--r--doc/src/declarative/qmlevents.qdoc110
1 files changed, 104 insertions, 6 deletions
diff --git a/doc/src/declarative/qmlevents.qdoc b/doc/src/declarative/qmlevents.qdoc
index 3c1c8df..8c2147a 100644
--- a/doc/src/declarative/qmlevents.qdoc
+++ b/doc/src/declarative/qmlevents.qdoc
@@ -1,6 +1,10 @@
/****************************************************************************
**
+<<<<<<< HEAD
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+=======
** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+>>>>>>> d7a91cfe8683309883694fbbf508e5fc42d44165
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
@@ -26,12 +30,106 @@
****************************************************************************/
/*!
- \page qmlevents.html
- \ingroup qml-features
- \contentspage QML Features
- \previouspage {Integrating QML Code with Existing Qt UI Code}
- \nextpage {Dynamic Object Management in QML}{Dynamic Object Management}
+\page qmlevents.html
+\ingroup qml-features
+\contentspage QML Features
+\previouspage {Integrating QML Code with Existing Qt UI Code}
+\nextpage {Dynamic Object Management in QML}{Dynamic Object Management}
- \title QML Signal and Handler Event System
+\title QML Signal and Handler Event System
+
+\section1 Overview, structural information
+
+QML utilizes Qt's \l{The Meta-Object System}{meta-object} and
+\l{Signals & Slots}{signals} systems. Signals and slots created using Qt in C++
+are inheritely valid in QML.
+
+\keyword qml-signals-and-handlers
+\section1 Signals and Handlers
+
+Signals provide a way to notify other objects when an event has occurred. For
+example, the MouseArea \c clicked signal notifies other objects that the mouse
+has been clicked within the area.
+
+The syntax for defining a new signal is:
+
+\qml
+signal <name>[([<type> <parameter name>[, ...]])]
+\endqml
+
+Attempting to declare two signals or methods with the same name in the same type
+block is an error. However, a new signal may reuse the name of an existing
+signal on the type. (This should be done with caution, as the existing signal
+may be hidden and become inaccessible.)
+
+Here are various examples of signal declarations:
+\snippet doc/src/snippets/declarative/events.qml parent begin
+\snippet doc/src/snippets/declarative/events.qml signal declaration
+\snippet doc/src/snippets/declarative/events.qml parent end
+
+If the signal has no parameters, the "\c{()}" brackets are optional. If
+parameters are used, the parameter types must be declared, as for the \c string
+and \c variant arguments of the \c perform signal.
+
+Adding a signal to an item automatically adds a \e{signal handler} as well. The
+signal hander is named \c on<SignalName>, with the first letter of the signal in
+uppercase. The previous signals have the following signal handlers:
+\snippet doc/src/snippets/declarative/events.qml signal handler declaration
+
+Further, each QML properties have a \c{<property_name>Changed} signal and its
+corresponding \c{on<property_name>Changed} signal handler. As a result, property
+changes may notify other components for any changes.
+\snippet doc/src/snippets/declarative/events.qml automatic signals
+
+To emit a signal, invoke it as a method. The signal handler binding is similar
+to a property binding and it is invoked when the signal is emitted. Use the
+defined argument names to access the respective arguments.
+\snippet doc/src/snippets/declarative/events.qml signal emit
+Note that the \c Component.onCompleted is an
+\l{attached-signalhandlers}{attached signal handler}; it is invoked when the
+\l Component initialization is complete.
+
+\keyword qml-connect-signals-to-method
+\section2 Connecting Signals to Methods and Signals
+
+Signal objects have a \c connect() method to a connect a signal either to a
+method or another signal. When a signal is connected to a method, the method is
+automatically invoked whenever the signal is emitted. (In Qt terminology, the
+method is a \e slot that is connected to the \e signal; all methods defined in
+QML are created as \l{Signals & Slots}{Qt slots}.) This enables a signal
+to be received by a method instead of a \l {Signal Handlers}{signal handler}.
+
+\snippet doc/src/snippets/declarative/events.qml connect method
+The \c {connect()} method is appropriate when connecting a JavaScript method,
+such as the \c {callee}'s\c answer method, to QML signals.
+
+The corresponding \c disconnect() method is for removing connected
+signals. The following code removes the connection created in \c application.qml above:
+\snippet doc/src/snippets/declarative/events.qml disconnect method
+
+\section3 Signal to Signal Connect
+
+By connecting signals to other signals, the \c connect() method can form different
+signal chains.
+\snippet doc/src/snippets/declarative/events.qml parent begin
+\snippet doc/src/snippets/declarative/events.qml forward signal
+\snippet doc/src/snippets/declarative/events.qml parent end
+
+Whenever the \l MouseArea \c clicked signal is emitted, the \c widgetClicked
+signal will automatically be emitted as well.
+
+\code
+output:
+ MouseArea clicked
+ Widget clicked
+\endcode
+
+\section1 C++ additions
+
+Because QML uses Qt, a signal defined in C++ also works as a QML signal. The
+signal may be emitted in QML code or called as a method. In addition, the QML
+runtime automatically creates signal handlers for the C++ signals. For more
+signal control, the \c connect() method and the \l Connect element may connect a
+C++ to another signal or method.
*/