From 706b9ceedbb0b287644a13fad34fbb1c580e302a Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 4 Mar 2021 13:16:36 +0100 Subject: [PATCH] Doc: Restructure information about Connections View - Add a topic that summarizes the Connections View tabs - Hide some technical detail in the instructions - Make "Adding Connections" a collection topic - Fix terminology to use "component" instead of "object". "item", or "QML type" Task-number: QDS-3771 Change-Id: I0b0d66cb50d8ecc7dbc812ef57918ffafb64cd8c Reviewed-by: Thomas Hartmann --- .../images/qmldesigner-binding-editor.png | Bin 5228 -> 3812 bytes doc/qtcreator/images/qmldesigner-bindings.png | Bin 4181 -> 4190 bytes .../images/qmldesigner-connections.png | Bin 5705 -> 4495 bytes doc/qtcreator/src/qtcreator-toc.qdoc | 5 +- .../qtquick/creator-logical-operators.qdocinc | 10 +- .../creator-only/qtquick-app-tutorial.qdoc | 2 +- .../src/qtquick/library/qtquick-controls.qdoc | 4 +- .../src/qtquick/qtquick-components.qdoc | 2 +- .../qtquick-connection-editor-bindings.qdoc | 52 ++++++---- .../qtquick-connection-editor-properties.qdoc | 49 +++++---- .../qtquick-connection-editor-signals.qdoc | 94 +++++++++-------- .../qtquick/qtquick-connection-editor.qdoc | 61 +++++------ .../src/qtquick/qtquick-connection-view.qdoc | 96 ++++++++++++++++++ .../src/qtquick/qtquick-designer.qdoc | 4 +- .../src/qtquick/qtquick-navigator.qdoc | 2 +- doc/qtdesignstudio/examples/doc/loginui3.qdoc | 2 +- doc/qtdesignstudio/examples/doc/sidemenu.qdoc | 4 +- .../examples/doc/washingMachineUI.qdoc | 4 +- .../src/qtdesignstudio-toc.qdoc | 5 +- 19 files changed, 263 insertions(+), 133 deletions(-) create mode 100644 doc/qtcreator/src/qtquick/qtquick-connection-view.qdoc diff --git a/doc/qtcreator/images/qmldesigner-binding-editor.png b/doc/qtcreator/images/qmldesigner-binding-editor.png index fc6650bc5bcc1b9b74e8305c91c5afa1d6857e49..0ffb326628d6336402f418f8020f81e85c40079f 100644 GIT binary patch literal 3812 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 literal 5228 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 YeUhH4)7|?u3=9kmp00i_>zopr05@kKMgRZ+ diff --git a/doc/qtcreator/images/qmldesigner-bindings.png b/doc/qtcreator/images/qmldesigner-bindings.png index 017b22cd23f617a89169df885d2579d3e289c216..32ccc5690748baf99d208eabd83b20582e3a0b70 100644 GIT binary patch literal 4190 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 literal 4181 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 E01XCwivR!s literal 5705 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

uiaT_zo|QPf8DvqXUeixEi60R zdaXV1Y@wayZ?h{Q#YLsF|AmMAv#1NS*^_@$zkFA`(`dps=RI8^|+?)73=%_pM}5g{(O5={_>X>yT2?~`@UJ&v?lKNl<)Vqn5Rtg z68d}Ce&50GTUGW>vbT$}6)^5j51Utf)9d?pg31G(rU zX#A*RgTe~DWM4f3+Al# diff --git a/doc/qtcreator/src/qtcreator-toc.qdoc b/doc/qtcreator/src/qtcreator-toc.qdoc index 8bee7c96012..151bc150bf7 100644 --- a/doc/qtcreator/src/qtcreator-toc.qdoc +++ b/doc/qtcreator/src/qtcreator-toc.qdoc @@ -96,6 +96,7 @@ \li \l{Library} \li \l{Navigator} \li \l{Properties} + \li \l{Connection View} \li \l{Transition Editor} \li \l{Timeline} \li \l{Curve Editor} @@ -128,9 +129,9 @@ \endlist \li \l{Adding Connections} \list - \li \l{Connecting Objects to Signals} - \li \l{Specifying Dynamic Properties} + \li \l{Connecting Components to Signals} \li \l{Adding Bindings Between Properties} + \li \l{Specifying Dynamic Properties} \li \l{Managing C++ Backend Objects} \endlist \li \l {Adding States} diff --git a/doc/qtcreator/src/qtquick/creator-logical-operators.qdocinc b/doc/qtcreator/src/qtquick/creator-logical-operators.qdocinc index a8bd94c4621..79284654a4f 100644 --- a/doc/qtcreator/src/qtquick/creator-logical-operators.qdocinc +++ b/doc/qtcreator/src/qtquick/creator-logical-operators.qdocinc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -84,6 +84,14 @@ different type. \endtable + \if defined(qtdesignstudio) + Alternatively, you can use \uicontrol {And Operator}, + \uicontrol {Or Operator}, and \uicontrol {Not Operator} + components to bind property values using the boolean AND, + OR, and NOT operator. For more information, see \l{Logic Helpers}. + \endif + + In addition, you can use arithmetic operators to compare numbers before checks. However, we recommend that you create separate properties for this purpose whenever possible. diff --git a/doc/qtcreator/src/qtquick/creator-only/qtquick-app-tutorial.qdoc b/doc/qtcreator/src/qtquick/creator-only/qtquick-app-tutorial.qdoc index f9822526ccd..3fbef6889c6 100644 --- a/doc/qtcreator/src/qtquick/creator-only/qtquick-app-tutorial.qdoc +++ b/doc/qtcreator/src/qtquick/creator-only/qtquick-app-tutorial.qdoc @@ -248,7 +248,7 @@ \list \li \l{Adding States} - \li \l{Connecting Objects to Signals} + \li \l{Connecting Components to Signals} \endlist \section1 Animating Transitions diff --git a/doc/qtcreator/src/qtquick/library/qtquick-controls.qdoc b/doc/qtcreator/src/qtquick/library/qtquick-controls.qdoc index d3db5c08b58..d5b86029742 100644 --- a/doc/qtcreator/src/qtquick/library/qtquick-controls.qdoc +++ b/doc/qtcreator/src/qtquick/library/qtquick-controls.qdoc @@ -76,7 +76,7 @@ can define an area smaller or larger than the parent. Several controls,such as \l {Button}{buttons}, contain a mouse area. - A mouse area emits \l{Connecting Objects to Signals}{signals} in response + A mouse area emits \l{Connecting Components to Signals}{signals} in response to different mouse events: \list @@ -437,7 +437,7 @@ \section2 Button Signals A button emits the \c clicked() signal when it is activated by users. - \l{Connecting Objects to Signals}{Connect to this signal} to perform + \l{Connecting Components to Signals}{Connect to this signal} to perform the button's action. Buttons provide the following additional signals: \c canceled(), \c doubleClicked(), \c pressed(), \c released(), and \c pressAndHold() for long presses. diff --git a/doc/qtcreator/src/qtquick/qtquick-components.qdoc b/doc/qtcreator/src/qtquick/qtquick-components.qdoc index a03b2ce4576..b2e47db3f5a 100644 --- a/doc/qtcreator/src/qtquick/qtquick-components.qdoc +++ b/doc/qtcreator/src/qtquick/qtquick-components.qdoc @@ -90,7 +90,7 @@ \li To enable users to interact with components, connect the components to signals in the \uicontrol Connections view. For example, you can specify what happens when a component is clicked. - For more information, see \l{Connecting Objects to Signals}. + For more information, see \l{Connecting Components to Signals}. \image qmldesigner-connections.png "Connections view Connections tab" \li To dynamically change the behavior of an object when another object changes, create bindings between components in the diff --git a/doc/qtcreator/src/qtquick/qtquick-connection-editor-bindings.qdoc b/doc/qtcreator/src/qtquick/qtquick-connection-editor-bindings.qdoc index 6a6012dcbd4..610b582e512 100644 --- a/doc/qtcreator/src/qtquick/qtquick-connection-editor-bindings.qdoc +++ b/doc/qtcreator/src/qtquick/qtquick-connection-editor-bindings.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2019 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -25,43 +25,44 @@ /*! \page quick-property-bindings.html - \previouspage quick-dynamic-properties.html - \if defined(qtdesignstudio) - \nextpage quick-states.html - \else - \nextpage quick-connections-backend.html - \endif + \previouspage quick-signals.html + \nextpage quick-dynamic-properties.html \title Adding Bindings Between Properties - To dynamically change the behavior of an object, you can create a \e binding - between the properties of two objects. To create a property binding, a - property is assigned a JavaScript expression that evaluates to the desired - value. At its simplest, a binding may be a reference to another property. - For example, the height of an object can be bound to the height of its - parent, so that when the parent height changes, the object height is + To dynamically change the behavior of a component, you can create a + \e binding between the properties of two components. To create a property + binding, a property is assigned a JavaScript expression that evaluates to + the desired value. Behind the scenes, the variables in the binding + expression are monitored. When a change is detected, the binding + expression is re-evaluated and the new result is applied to the property. + + At its simplest, a binding may be a reference to another property. + For example, the height of a component can be bound to the height of its + parent, so that when the parent height changes, the component height is adjusted automatically. For more information about the use of property bindings, see \l{Property Binding}. - You can create bindings between objects in the \uicontrol Connections view. + You can create bindings between components in \uicontrol Bindings. \image qmldesigner-bindings.png - To bind a property of an object to the property of another object: + To bind a property of a component to the property of another component: \list 1 - \li In the \uicontrol {Connections} view, select the - \uicontrol {Bindings} tab. + \li Select \uicontrol View > \uicontrol Views > + \uicontrol {Connection view} > \uicontrol {Bindings}. \li Select the \inlineimage plus.png (\uicontrol Add) button to add a binding for the currently selected - item. The ID is displayed in the \uicontrol Item column. + component. The component ID is displayed in the \uicontrol Item + column. \li Double-click the value in the \uicontrol Property column to select the property to bind to a source property. \li Double-click the value in the \uicontrol {Source Item} column to - select the object whose property you want to use to determine the - behavior of the target object. + select the component whose property you want to use to determine the + behavior of the target component. \li Double-click the value in the \uicontrol {Source Property} column to select the property to bind the target property to. \endlist @@ -72,6 +73,17 @@ \image qmldesigner-binding-editor.png "Binding Editor" + For examples of creating property bindings, see: + + \list + \li \l{Using States to Change Component Property Values} + \if defined(qtdesignstudio) + \li \l{Exporting Properties} + \else + \li \l{Moving the Bubble} in \l{Creating a Mobile Application} + \endif + \endlist + For more information, watch the following video: \youtube UfvA04CIXv0 diff --git a/doc/qtcreator/src/qtquick/qtquick-connection-editor-properties.qdoc b/doc/qtcreator/src/qtquick/qtquick-connection-editor-properties.qdoc index c370f36b3f7..efcd189a302 100644 --- a/doc/qtcreator/src/qtquick/qtquick-connection-editor-properties.qdoc +++ b/doc/qtcreator/src/qtquick/qtquick-connection-editor-properties.qdoc @@ -24,40 +24,45 @@ ****************************************************************************/ /*! - \previouspage quick-signals.html \page quick-dynamic-properties.html - \nextpage quick-property-bindings.html + \previouspage quick-property-bindings.html + \if defined(qtdesignstudio) + \nextpage quick-states.html + \else + \nextpage quick-connections-backend.html + \endif \title Specifying Dynamic Properties - Each predefined QML type has a set of predefined properties that you can - specify values for. You can add custom properties that would not otherwise - exist for a particular type. You bind the properties to dynamic expressions - to define global properties for an object that can be read by other objects. - For example, you can specify global properties for the root object that you - can use in the child objects. + Each preset \l{glossary-component}{component} has a set of preset properties + that you can specify values for. You can add custom properties that would + not otherwise exist for a particular \l{Component Types}{component type}. + You bind the properties to dynamic expressions to define global properties + for a component that can be read by other components. For example, you can + specify global properties for the root component that you can use in the + child components. For example, to specify spacing between UI elements, you could define a - margin for an object of a QML type that does not have a margin property, - and then use bindings to refer to the value of the margin property from - other objects. + margin for a component that does not have a margin property, and then use + \l{Adding Bindings Between Properties}{bindings} to refer to the value of + the margin property from other components. - Similarly, you can add custom properties for your own QML types that are - based on the predefined types. + Similarly, you can add custom properties for your own components that are + based on preset components. - You can add properties for objects in the \uicontrol Connections view, - \uicontrol Properties tab. + You can add properties for components in \uicontrol {Connections View} > + \uicontrol Properties. \image qmldesigner-dynamicprops.png "Custom properties in Connection View Custom Properties tab" - To add properties for an object: + To add properties for a component: \list 1 \li Select \uicontrol View > \uicontrol Views > \uicontrol {Connections View} > \uicontrol {Properties}. \li Select the \inlineimage plus.png (\uicontrol Add) button to add a dynamic property for the currently - selected item. The item ID is displayed in the \uicontrol Item + selected component. The component ID is displayed in the \uicontrol Item column. \li Double-click the value in the \uicontrol Property column to give a name to the property. Property names must begin with a lower case @@ -76,17 +81,19 @@ \image qmldesigner-binding-editor.png "Binding Editor" - The properties you add for a QML type are displayed in the - \uicontrol Properties view when you select a component of - that type in \uicontrol Navigator or \uicontrol {Form Editor}. + The properties you add for a component are displayed in the \l Properties + view when you select a component of that type in \l Navigator or + \l {Form Editor}. \image qtquick-custom-properties.png "Custom properties in Properties view" For more information about setting property values in the - \uicontrol Properties view, see \l{Specifying Component Properties}. + \l Properties view, see \l{Specifying Component Properties}. + \if defined(qtcreator) For an example of using custom properties in an application, see \l{Creating a Mobile Application}. + \endif \section1 Supported Property Types diff --git a/doc/qtcreator/src/qtquick/qtquick-connection-editor-signals.qdoc b/doc/qtcreator/src/qtquick/qtquick-connection-editor-signals.qdoc index 43679007285..00ec0482642 100644 --- a/doc/qtcreator/src/qtquick/qtquick-connection-editor-signals.qdoc +++ b/doc/qtcreator/src/qtquick/qtquick-connection-editor-signals.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2019 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -26,55 +26,57 @@ /*! \previouspage qmldesigner-connections.html \page quick-signals.html - \nextpage quick-dynamic-properties.html + \nextpage quick-property-bindings.html - \title Connecting Objects to Signals + \title Connecting Components to Signals + + A signal and handler mechanism enables components to respond to application + events, which are represented by \e signals. When a signal is emitted, the + corresponding \e {signal handler} is invoked to respond to the event by + using scripts or other operations placed in the handler. To receive a notification when a particular signal is emitted for a - particular object, the object definition should declare a signal handler + particular component, the component definition should declare a signal handler named \e {on} where \e {} is the name of the signal, with the first letter capitalized. The signal handler should contain the JavaScript code to be executed when the signal handler is invoked. - QML types have predefined signals that are emitted when users interact with - the application. For example, the \l {Mouse Area} type has a - \c clicked signal that is emitted whenever the mouse is - clicked within the area. Since the signal name is \c clicked, the signal - handler for receiving this signal is named \c onClicked. + Components have predefined signals that are emitted when users interact with + the application. For example, the \l {Mouse Area} component has a \c clicked + signal that is emitted whenever the mouse is clicked within the area. Since + the signal name is \c clicked, the signal handler for receiving this signal + is named \c onClicked. - A signal is automatically emitted when the value of a QML property changes. + A signal is automatically emitted when the value of a property changes. This type of signal is a \e{property change signal} and signal handlers for these signals are written in the form \c onChanged, where \e is the name of the property, with the first letter capitalized. - For example, the Mouse Area type has a \c pressed property. To receive a - notification whenever this property changes, you would use a signal handler + For example, the Mouse Area component has a \c pressed property. To receive + a notification whenever this property changes, you would use a signal handler called \c onPressedChanged. For more information about signals and signal handlers, see \l{Signal and Handler Event System}. - To access a signal outside of the object that emits it, you can use the - \l Connections type for connecting to signals of arbitrary objects. A - connections object can receive any signal from its specified target. - You can connect objects to signals that are available to them in the - \uicontrol Connections view. + You can connect components to signals that are available to them in + \uicontrol Connections. \image qmldesigner-connections.png - To connect objects to signals: + To connect components to signals: \list 1 - \li In the \uicontrol {Connections} view, select the - \uicontrol {Connections} tab. + \li Select \uicontrol View > \uicontrol Views > + \uicontrol {Connection View} > \uicontrol {Connections}. \li Select the \inlineimage plus.png (\uicontrol Add) button to add a connection. \li Double-click the value in the \uicontrol Target column to add the - object to connect to a signal. + component to connect to a signal. \li Double-click the value in the \uicontrol {Signal Handler} column to select the signal that the connection will listen to from a list of - all signals available for the object. + all signals available for the component. \li Double-click the value in the \uicontrol Actions column to specify the action to perform when the signal is emitted. You use JavaScript to specify the actions. @@ -84,6 +86,18 @@ in the context menu to specify the connection in \uicontrol {Connection Editor}. + \if defined(qtcreator) + For an example of using the \uicontrol {Connections} view, see + \l{Connecting Mouse Clicks to State Changes}. + \else + For examples of using the \uicontrol {Connections} view, see: + + \list + \li \l{Connecting Buttons to States} in \l{Log In UI - Part 3} + \li \l{Connecting Buttons to State Changes} in \l{Washing Machine UI} + \endlist + \endif + \section1 Adding Signal Handlers If a signal handler that you need is not listed in the @@ -100,43 +114,41 @@ \li Select \uicontrol OK. \endlist - The added signal handler is automatically \l{Using Qt Quick UI Forms} + The added signal handler is automatically \l{Adding Property Aliases} {exported as a property}. - \if defined(qtdesignstudio) \section1 Adding Actions and Assignments You use the \uicontrol {Connection Editor} to create the JavaScript expressions for \e actions and \e assignments. An \e action connects - an object to a signal, whereas an \e assignment fetches property values - from another object. + an component to a signal, whereas an \e assignment fetches property values + from another component. For more information about the logical operators that you can use to construct conditional expressions, see \l {Summary of Logical Operators}. To create JavaScript expressions for actions: - \image qtquick-connection-editor-action.png - \list 1 - \li Select \uicontrol Action as the type of the connections object. - \li Select the object to connect to a signal. + \li Select \uicontrol {Open Connection Editor} in the context menu + in \uicontrol {Connections}. + \image qtquick-connection-editor-action.png + \li Select \uicontrol Action as the type of the connections component. + \li Select the component to connect to a signal. \li Select the action to perform when the signal is emitted. \endlist To create JavaScript expressions for assignments: - \image qtquick-connection-editor-assignment.png - \list 1 - \li Select \uicontrol Assignment as the type of the connections object. - \li Select the target object for the property assignment. - \li Select the property of the target object to assign a value to. - \li Select the source object for the property assignment. - \li Select the property of the source object to fetch the value from. + \li Select \uicontrol {Open Connection Editor} in the context menu + in \uicontrol {Connections}. + \image qtquick-connection-editor-assignment.png + \li Select \uicontrol Assignment as the type of the connections + component. + \li Select the target component for the property assignment. + \li Select the property of the target component to assign a value to. + \li Select the source component for the property assignment. + \li Select the property of the source component to fetch the value from. \endlist - - For an example of connecting the \c clicked signal of a button to a - \l{Adding States}{state}, see \l {Log In UI - Part 3}. - \endif */ diff --git a/doc/qtcreator/src/qtquick/qtquick-connection-editor.qdoc b/doc/qtcreator/src/qtquick/qtquick-connection-editor.qdoc index 732ae2beee6..2c3d6a15f15 100644 --- a/doc/qtcreator/src/qtquick/qtquick-connection-editor.qdoc +++ b/doc/qtcreator/src/qtquick/qtquick-connection-editor.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -30,43 +30,36 @@ \title Adding Connections - The user interface components and the application need to communicate with - each other. For example, a button needs to know that the user has clicked - on it. The button may then change color to indicate its state or perform an - action. Further, the application needs to know whether the user is clicking - the button, because it may need to relay this clicking event to other - applications. - - QML has a signal and handler mechanism, that enables components to respond - to application events. Events are represented by \e signals. When a signal - is emitted, the corresponding \e {signal handler} is invoked to respond to - the event by using scripts or other operations placed in the handler. - - To access a signal outside of the object that emits it, you can use the - \l Connections type for connecting to signals of arbitrary objects. A - Connections object can receive any signal from its specified target. - - A component's property can be assigned a static value which stays constant - until it is explicitly assigned a new value. However, to make the fullest - use of QML and its built-in support for dynamic object behaviors, most QML - types use property bindings. This means that you can specify relationships - between different object properties so that when a property's dependencies - change in value, the property's value is automatically updated accordingly. - - Behind the scenes, the QML engine monitors the property's dependencies (that - is, the variables in the binding expression). When a change is detected, the - QML engine re-evaluates the binding expression and applies the new result to - the property. - - The following sections describe how to use the \uicontrol {Connections} view - to perform the following tasks: - \list - \li \l{Connecting Objects to Signals} - \li \l{Specifying Dynamic Properties} + \li \l{Connecting Components to Signals} + + A signal and handler mechanism enables components to respond to + application events, which are represented by \e signals. When a + signal is emitted, the corresponding \e {signal handler} is + invoked to respond to the event by applying an action, for + example. + \li \l{Adding Bindings Between Properties} + + A component's property can be assigned a static value that stays + constant until it is explicitly changed. To make the UI more + dynamic, you can use \e {property bindings}. This means that you + can specify relationships between component properties so that when + the value of a property changes, the values of any properties that + are bound to it are automatically updated accordingly. + + \li \l{Specifying Dynamic Properties} + + Each preset component has a set of preset properties that you + can specify values for. You can add custom properties that would + not otherwise exist for a particular \l{Component Types} + {component type} or your custom components. + \if defined(qtcreator) \li \l{Managing C++ Backend Objects} + + Application developers can access QObject objects implemented in C++ + from QML files. \endif \endlist diff --git a/doc/qtcreator/src/qtquick/qtquick-connection-view.qdoc b/doc/qtcreator/src/qtquick/qtquick-connection-view.qdoc new file mode 100644 index 00000000000..5529ffa2de2 --- /dev/null +++ b/doc/qtcreator/src/qtquick/qtquick-connection-view.qdoc @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Creator documentation. +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/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: https://www.gnu.org/licenses/fdl-1.3.html. +** +****************************************************************************/ + +/*! + \page qtquick-connection-view.html + \previouspage qtquick-properties-view.html + \nextpage qtquick-states-view.html + + \title Connection View + + The \uicontrol {Connection View} is a collection of views that enable you + to create connections between components and the application, to bind + component properties together, and to add custom properties for components. + + \image qmldesigner-connections.png "Connections View" + + The \l{glossary-component}{components} of the application UI and the + application logic need to communicate with each other. For example, a + button needs to know that the user has clicked it. The button may then + change color to indicate its state or perform an action. Further, the + application needs to know whether the user clicked the button because + it may need to relay this clicking event to other applications. For + this purpose, a button typically contains a \l{Mouse Area} component, + which can receive different pointer events and emit \e signals in + response to them. + + Another way to connect components is to bind their \l{Properties} + {properties} together. A component's property can be assigned a static + value which stays constant until it is explicitly changed. To make the + UI more dynamic, you can use \e {property bindings}. This means that + you can specify relationships between component properties so that when + the value of a property changes, the values of any properties that are + bound to it are updated accordingly. + + Each preset component has a set of \l{Specifying Component Properties} + {preset properties} that you can specify values for. You can add + custom properties that would not otherwise exist for a particular + \l{Component Types}{component type}. + + \if defined(qtcreator) + In addition, application developers can use the \uicontrol Backends view + to access QObject objects implemented in C++ from QML files. + \endif + + \section1 Summary of Connection Views + + \table + \header + \li View + \li Purpose + \li Read More + \row + \li \uicontrol Connections + \li Create connections between components and the application logic + by accessing signals outside of the components that emit them. + \li \l{Connecting Components to Signals} + \row + \li \uicontrol Bindings + \li Dynamically change the behavior of a component by creating a + binding between the properties of two components. + \li \l{Adding Bindings Between Properties} + \row + \li \uicontrol Properties + \li Add custom properties that would not otherwise exist for a + particular preset component or your own custom component. + \li \l{Specifying Dynamic Properties} + \if defined(qtcreator) + \row + \li \uicontrol Backends + \li Access QObject objects implemented in C++ from QML files. + \li \l{Managing C++ Backend Objects} + \endif + \endtable +*/ diff --git a/doc/qtcreator/src/qtquick/qtquick-designer.qdoc b/doc/qtcreator/src/qtquick/qtquick-designer.qdoc index cab0701dfd5..7c79e441ade 100644 --- a/doc/qtcreator/src/qtquick/qtquick-designer.qdoc +++ b/doc/qtcreator/src/qtquick/qtquick-designer.qdoc @@ -89,9 +89,9 @@ \li Enables you to modify the properties of the selected component. \li \l {Specifying Component Properties} \row - \li \l{Adding Connections}{Connection View} + \li \l{Connection View} \li Enables you to add functionality to the UI by creating - connections between objects, signals, and object properties. + connections between components, signals, and component properties. \li \l{Adding Connections} \row \li \l{Adding States}{States} diff --git a/doc/qtcreator/src/qtquick/qtquick-navigator.qdoc b/doc/qtcreator/src/qtquick/qtquick-navigator.qdoc index e6eb7db95fc..59dcdad2997 100644 --- a/doc/qtcreator/src/qtquick/qtquick-navigator.qdoc +++ b/doc/qtcreator/src/qtquick/qtquick-navigator.qdoc @@ -26,7 +26,7 @@ /*! \page qtquick-navigator.html \previouspage quick-library.html - \nextpage qtquick-properties.html + \nextpage qtquick-properties-view.html \title Navigator diff --git a/doc/qtdesignstudio/examples/doc/loginui3.qdoc b/doc/qtdesignstudio/examples/doc/loginui3.qdoc index a0bc1d2294f..56a76bb73b2 100644 --- a/doc/qtdesignstudio/examples/doc/loginui3.qdoc +++ b/doc/qtdesignstudio/examples/doc/loginui3.qdoc @@ -186,7 +186,7 @@ is clicked within the area. You will now use the \uicontrol Connections view to - \l{Connecting Objects to Signals}{connect} the clicked signal of + \l{Connecting Components to Signals}{connect} the clicked signal of \e registerButton to \e registerState and that of \e backButton to \e loginState: diff --git a/doc/qtdesignstudio/examples/doc/sidemenu.qdoc b/doc/qtdesignstudio/examples/doc/sidemenu.qdoc index acc13538b81..ff69b48febf 100644 --- a/doc/qtdesignstudio/examples/doc/sidemenu.qdoc +++ b/doc/qtdesignstudio/examples/doc/sidemenu.qdoc @@ -205,8 +205,8 @@ The side menu is fully visible and accepts input only in the \e open state. - For more information about connecting objects to signals, see - \l {Connecting Objects to Signals}. + For more information about Connecting Components to Signals, see + \l {Connecting Components to Signals}. \section1 Applying Effects diff --git a/doc/qtdesignstudio/examples/doc/washingMachineUI.qdoc b/doc/qtdesignstudio/examples/doc/washingMachineUI.qdoc index 2bd8e7538b1..ed1d079fb3e 100644 --- a/doc/qtdesignstudio/examples/doc/washingMachineUI.qdoc +++ b/doc/qtdesignstudio/examples/doc/washingMachineUI.qdoc @@ -46,7 +46,7 @@ \endlist Users select buttons to navigate between the screens. - We use \l{Connecting Objects to Signals}{connections} to determine which + We use \l{Connecting Components to Signals}{connections} to determine which screen to open when users select a particular button and \l{Adding States} {States} to show the screens. We use the \l{Creating Animations}{timeline} to create progress indicators for buttons and the \e Running screen. @@ -234,7 +234,7 @@ We create similar connections between button objects and signals in the other screens to apply other actions that move users to other screens. - For more information, see \l {Connecting Objects to Signals}. + For more information, see \l {Connecting Components to Signals}. \section1 Showing the Current Time diff --git a/doc/qtdesignstudio/src/qtdesignstudio-toc.qdoc b/doc/qtdesignstudio/src/qtdesignstudio-toc.qdoc index fd69a3c30bb..4a1c0fcc2da 100644 --- a/doc/qtdesignstudio/src/qtdesignstudio-toc.qdoc +++ b/doc/qtdesignstudio/src/qtdesignstudio-toc.qdoc @@ -62,6 +62,7 @@ \li \l{Library} \li \l{Navigator} \li \l{Properties} + \li \l{Connection View} \li \l{Transition Editor} \li \l{Timeline} \li \l{Curve Editor} @@ -117,9 +118,9 @@ \endlist \li \l{Adding Connections} \list - \li\l{Connecting Objects to Signals} - \li\l{Specifying Dynamic Properties} + \li\l{Connecting Components to Signals} \li\l{Adding Bindings Between Properties} + \li\l{Specifying Dynamic Properties} \endlist \li \l{Adding States} \endlist