forked from qt-creator/qt-creator
Doc: Add an overview of creating UI logic in Qt Quick
Fixes: QDS-4499 Change-Id: I5a095d31988f114d29aa20c35c5edf02891bb824 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io> Reviewed-by: Jarko Vihriala <jarko.vihriala@qt.io> Reviewed-by: Brook Cronin <brook.cronin@qt.io>
This commit is contained in:
146
doc/qtcreator/src/qtquick/qtquick-creating-ui-logic.qdoc
Normal file
146
doc/qtcreator/src/qtquick/qtquick-creating-ui-logic.qdoc
Normal file
@@ -0,0 +1,146 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2021 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Design Studio 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-creating-ui-logic.html
|
||||
\previouspage qtquick-prototyping.html
|
||||
\nextpage studio-simulation-overview.html
|
||||
|
||||
\title Creating UI Logic
|
||||
|
||||
Turn your wireframe into an interactive prototype by adding UI logic that
|
||||
enables your components to apply actions or react to mock data from backend
|
||||
systems to simulate complex experiences.
|
||||
|
||||
Create connections between the UI components to enable them to communicate
|
||||
with each other. For example, how should the appearance of a button change
|
||||
on a mouse click and which action should the UI perform in response to the
|
||||
\e signal that is emitted upon the mouse click.
|
||||
|
||||
You can create connections between UI components by binding their
|
||||
properties together. This way, when the value of a property changes in a
|
||||
parent component, it can be automatically changed in all the child
|
||||
components by emitting a signal that indicates a change in the value.
|
||||
|
||||
To reference a property of a component from another component, you can
|
||||
create \l{Adding Property Aliases}{property aliases} that hold a reference
|
||||
to another property. Unlike an ordinary property definition, which
|
||||
allocates a new, unique storage space for the property, a property
|
||||
alias connects the newly declared property (called the
|
||||
\e {aliasing property}) as a direct reference to an existing property
|
||||
(the \e {aliased property}). Any content that is data-driven should be
|
||||
exported as a public property of the relevant component. For example,
|
||||
a speedometer should have a property for speed to which the UI is bound.
|
||||
|
||||
You can declare various \l{Adding States}{UI states} that describe how
|
||||
property values change from a base state. States can be a useful way of
|
||||
organizing your UI logic. You can associate transitions with components
|
||||
to define how their properties will animate when they change due to a
|
||||
state change.
|
||||
|
||||
\if defined(qtdesignstudio)
|
||||
The \l{Log In UI - Part 3} example illustrates using states to create
|
||||
two UI screens and signals emitted by buttons to apply the states.
|
||||
The button components also switch states when they are pressed down.
|
||||
|
||||
\image loginui3.gif "Clicking buttons to switch between screens"
|
||||
\endif
|
||||
|
||||
Using property aliases and states to create the differences in your
|
||||
component instances enables you to reuse components instead of duplicating
|
||||
them. Thus, the components do not need to be processed as completely new
|
||||
component types. This reduces the loading and compilation time as well as
|
||||
the package size of the final application.
|
||||
|
||||
The preset \l{UI Controls}{UI controls} have default properties and states
|
||||
that you can modify. If you need additional properties, you can turn
|
||||
instances of the controls into custom components and specify new properties
|
||||
for them.
|
||||
|
||||
\if defined(qtdesignstudio)
|
||||
To have your UI perform certain operations, you might need to write
|
||||
JavaScript expressions for conditions or convert numbers to strings.
|
||||
To make this easier, \QDS provides preset components called
|
||||
\l{Logic Helpers}{logic helpers}. They are invisible components that
|
||||
you can use in connection with controls, such as a \l {slider-control}
|
||||
{Slider} or \l {Check Box}.
|
||||
|
||||
Logic helpers are available for binding property values using the boolean
|
||||
AND, NOT, and OR operators, as well as for mapping numbers and numerical
|
||||
ranges. In addition, you can synchronize the property values of two
|
||||
components bi-directionally.
|
||||
|
||||
The logic helper example uses property binding, states, and logic helpers
|
||||
to implement the UI logic.
|
||||
|
||||
\image studio-logic-helper-combining-example.gif "Logic helper example application"
|
||||
\endif
|
||||
|
||||
The following table summarizes some typical use cases with links to more
|
||||
information.
|
||||
|
||||
\table
|
||||
\header
|
||||
\li To Learn About
|
||||
\li Go To
|
||||
\row
|
||||
\li Responding to application events
|
||||
\li \l{Connecting Components to Signals}
|
||||
\row
|
||||
\li Formatting connections
|
||||
\li \l{Adding Actions and Assignments}
|
||||
\row
|
||||
\li Dynamically changing the behavior of a component
|
||||
\li \l{Adding Bindings Between Properties}
|
||||
\row
|
||||
\li Formatting property bindings
|
||||
\li \l{Setting Bindings}
|
||||
\row
|
||||
\li Referencing a property of a component from another component
|
||||
\li \l{Adding Property Aliases}
|
||||
\row
|
||||
\li Referencing a state from within a specific component
|
||||
\li \l{Adding States}
|
||||
\row
|
||||
\li Switching to a state when a particular property changes
|
||||
\li \l{Applying States}
|
||||
\row
|
||||
\li Using preset UI controls that have default properties and states
|
||||
\li \l{UI Controls}
|
||||
\if defined(qtdesignstudio)
|
||||
\row
|
||||
\li Creating conditional conditions
|
||||
\li \l{Logic Helpers}
|
||||
\endif
|
||||
\row
|
||||
\li Adding custom properties for a particular component type
|
||||
\li \l{Specifying Dynamic Properties}
|
||||
\omit
|
||||
\row
|
||||
\li Adding properties for controlling states
|
||||
\li TODO
|
||||
\endomit
|
||||
\endtable
|
||||
*/
|
Reference in New Issue
Block a user