summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJerome Pasion <jerome.pasion@nokia.com>2011-02-10 10:50:17 (GMT)
committerJerome Pasion <jerome.pasion@nokia.com>2011-02-10 10:50:17 (GMT)
commit208715da3f06a862081f86548348518f9bc63177 (patch)
treeadd28358953c792f88fa96ad545cd75956971f75
parent69500fc302cd52033a058c601bdbad3a31ed2971 (diff)
downloadQt-208715da3f06a862081f86548348518f9bc63177.zip
Qt-208715da3f06a862081f86548348518f9bc63177.tar.gz
Qt-208715da3f06a862081f86548348518f9bc63177.tar.bz2
Re-wrote QML Reusable Components documentation
Task-number: QTBUG-16071
-rw-r--r--doc/src/declarative/basicelements.qdoc9
-rw-r--r--doc/src/declarative/qmlreusablecomponents.qdoc40
-rw-r--r--doc/src/snippets/declarative/reusablecomponents/Button.qml15
-rw-r--r--doc/src/snippets/declarative/reusablecomponents/application.qml8
-rw-r--r--doc/src/snippets/declarative/reusablecomponents/component.qml6
-rw-r--r--doc/src/snippets/declarative/reusablecomponents/focusbutton.qml98
-rw-r--r--doc/src/snippets/declarative/reusablecomponents/qmldir4
7 files changed, 159 insertions, 21 deletions
diff --git a/doc/src/declarative/basicelements.qdoc b/doc/src/declarative/basicelements.qdoc
index 5997998..ad53ea4 100644
--- a/doc/src/declarative/basicelements.qdoc
+++ b/doc/src/declarative/basicelements.qdoc
@@ -109,15 +109,6 @@ the component will retain the top-level component's properties. If a non-visual
component is the top-level component, the visual properties should be aliased to
the top-level to display the component properly.
-A component implemented using a \c Rectangle as the top-level component:
-\snippet doc/src/snippets/declarative/focus/mywidget.qml document
-
-A component that uses a \c FocusScope as the top-level component:
-\snippet doc/src/snippets/declarative/focus/myfocusscopewidget.qml document
-Note that the visual properties need to be passed to the parent. The
-\l {Keyboard Focus in QML}{focus} article provides more details about the
-\c FocusScope element.
-
For more information on how to build upon QML elements, see the
\l{Importing Reusable Components} document.
*/
diff --git a/doc/src/declarative/qmlreusablecomponents.qdoc b/doc/src/declarative/qmlreusablecomponents.qdoc
index 0fd5515..956fa24 100644
--- a/doc/src/declarative/qmlreusablecomponents.qdoc
+++ b/doc/src/declarative/qmlreusablecomponents.qdoc
@@ -74,14 +74,14 @@ declaring a \c Button. The button is defined in the
\snippet doc/src/snippets/declarative/reusablecomponents/application.qml document
Note that the component name, \c Button, matches the QML filename, \c Button.qml.
-Specifically, the first character is in upper case. Matching the names allow
+Also, the first character is in upper case. Matching the names allow
components in the same directory to be in the direct import path of the
application.
For flexibility, a \c qmldir file is for dictating which additional components,
plugins, or directories should be imported. By using a \c qmldir file,
component names do not need to match the filenames. The \c qmldir file should,
-however, in an imported path.
+however, be in an imported path.
\snippet doc/src/snippets/declarative/reusablecomponents/qmldir document
\section2 Loading an Inline Component
@@ -103,6 +103,42 @@ Specifically, there are \l{attached-properties}{attached properties} and
\l{attached-signalhandlers}{attached signal handlers} for setting properties
during the lifetime of a component.
+The \c{Component.onCompleted} attached signal handler is called when the
+component completes initialization. It is useful for executing any commands
+after component initialization. Similarly, the \c{Component.onDestruction}
+signal handler executes when the component finishes destruction.
+
+\keyword qml-top-level
+\section1 Top-Level Component
+
+Choosing the \e{top-level} or the \e{root} object of components is an important
+design aspect because the top-level object dictates which properties are
+accessible outside the component. Some elements are not visual elements and
+will not have visual properties exposed outside the component. Likewise, some
+elements add functionality that are not available to visual elements.
+
+Consider the Button component from the
+\l{qml-define-components}{Defining New Components} section; it's top-level
+object is a \l Rectangle. When imported, the Button component will possess the
+Rectangle's properties, methods, signals, and any custom properties.
+
+\snippet doc/src/snippets/declarative/reusablecomponents/Button.qml parent begin
+\snippet doc/src/snippets/declarative/reusablecomponents/Button.qml ellipses
+\snippet doc/src/snippets/declarative/reusablecomponents/Button.qml properties
+\snippet doc/src/snippets/declarative/reusablecomponents/Button.qml ellipses
+\snippet doc/src/snippets/declarative/reusablecomponents/Button.qml parent end
+
+The Button's \c text alias is accessible from outside the component as well as
+the Rectangle's visual properties and signals such as \c x, \c y, \c anchors,
+and \c states.
+
+Alternatively, we may choose a \l {Keyboard Focus in QML}{FocusScope} as our
+top-level object. The \l FocusScope element manage keyboard focus for its
+children which is beneficial for certain types of interfaces. However, since
+\c FocusScopes are not visual elements, the visual properties of its child need
+to be exposed.
+
+\snippet doc/src/snippets/declarative/reusablecomponents/focusbutton.qml document
*/
The root object in \c Button.qml defines the attributes that are available to users of the
diff --git a/doc/src/snippets/declarative/reusablecomponents/Button.qml b/doc/src/snippets/declarative/reusablecomponents/Button.qml
index 955e73a..3b97e00 100644
--- a/doc/src/snippets/declarative/reusablecomponents/Button.qml
+++ b/doc/src/snippets/declarative/reusablecomponents/Button.qml
@@ -41,12 +41,16 @@
//contents of Button.qml
import QtQuick 1.0
+//! [parent begin]
Rectangle {
+//! [parent begin]
+ id: button
+//! [properties]
width: 145; height: 60
color: "blue"
smooth: true; radius: 9
property alias text: label.text
-
+//! [properties]
border {color: "#B9C5D0"; width: 1}
gradient: Gradient {
@@ -67,5 +71,14 @@ Rectangle {
anchors.fill: parent
onClicked: console.log(text + " clicked")
}
+//! [parent end]
}
+//! [parent end]
+
//! [document]
+
+//! [ellipses]
+ //...
+//! [ellipses]
+
+
diff --git a/doc/src/snippets/declarative/reusablecomponents/application.qml b/doc/src/snippets/declarative/reusablecomponents/application.qml
index 094134f..a09b276 100644
--- a/doc/src/snippets/declarative/reusablecomponents/application.qml
+++ b/doc/src/snippets/declarative/reusablecomponents/application.qml
@@ -45,11 +45,11 @@ Rectangle {
color: "lightgrey"
Column {
- anchors.centerIn: parent
- spacing: 15
+ anchors.centerIn: parent
+ spacing: 15
Button {}
- Button {text: "Click Me Too!"}
- Button {text: "Click Me Three!"}
+ Button {text: "Me Too!"}
+ Button {text: "Me Three!"}
}
}
//! [document]
diff --git a/doc/src/snippets/declarative/reusablecomponents/component.qml b/doc/src/snippets/declarative/reusablecomponents/component.qml
index 88fc9b1..8660c50 100644
--- a/doc/src/snippets/declarative/reusablecomponents/component.qml
+++ b/doc/src/snippets/declarative/reusablecomponents/component.qml
@@ -61,11 +61,11 @@ Rectangle {
MouseArea {
anchors.fill: parent
onClicked: {
- inlinecomponent.createObject(screen)
+ inlinecomponent.createObject(parent)
- var second = inlinecomponent.createObject(screen)
+ var second = inlinecomponent.createObject(parent)
- var third = inlinecomponent.createObject(screen)
+ var third = inlinecomponent.createObject(parent)
third.x = second.width + 10
third.color = "red"
}
diff --git a/doc/src/snippets/declarative/reusablecomponents/focusbutton.qml b/doc/src/snippets/declarative/reusablecomponents/focusbutton.qml
new file mode 100644
index 0000000..2522a98
--- /dev/null
+++ b/doc/src/snippets/declarative/reusablecomponents/focusbutton.qml
@@ -0,0 +1,98 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//! [document]
+//contents of focusbutton.qml
+import QtQuick 1.0
+
+//! [parent begin]
+FocusScope {
+//! [parent begin]
+
+ //! [expose visuals]
+ //FocusScope needs to bind to visual properties of the children
+ property alias color: button.color
+ x: button.x; y: button.y
+ width: button.width; height: button.height
+ //! [expose visuals]
+
+ //! [rectangle begin]
+ Rectangle {
+ //! [rectangle begin]
+ id: button
+ //! [properties]
+ width: 145; height: 60
+ color: "blue"
+ smooth: true; radius: 9
+ property alias text: label.text
+ //! [properties]
+ border {color: "#B9C5D0"; width: 1}
+
+ gradient: Gradient {
+ GradientStop {color: "#CFF7FF"; position: 0.0}
+ GradientStop {color: "#99C0E5"; position: 0.57}
+ GradientStop {color: "#719FCB"; position: 0.9}
+ }
+
+ Text {
+ id: label
+ anchors.centerIn: parent
+ text: "Click Me!"
+ font.pointSize: 12
+ color: "blue"
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: console.log(text + " clicked")
+ }
+ //! [rectangle end]
+ }
+ //! [rectangle end]
+//! [parent end]
+}
+//! [parent end]
+
+//! [document]
+
+//! [ellipses]
+ //...
+//! [ellipses]
+
+
diff --git a/doc/src/snippets/declarative/reusablecomponents/qmldir b/doc/src/snippets/declarative/reusablecomponents/qmldir
index 93b53f9..253732d 100644
--- a/doc/src/snippets/declarative/reusablecomponents/qmldir
+++ b/doc/src/snippets/declarative/reusablecomponents/qmldir
@@ -1,4 +1,4 @@
//! [document]
-Button ./Button.qml 1.0
-SimpleButton ./simplebutton.qml
+Button ./Button.qml
+FocusButton ./focusbutton.qml
//! [document]