aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/doc/snippets/qmlapp/usecases/animations.qml
diff options
context:
space:
mode:
authorAlexei Cazacov <alexei.cazacov@qt.io>2025-05-27 12:35:42 +0300
committerAlexei Cazacov <alexei.cazacov@qt.io>2025-08-01 13:42:37 +0000
commit161464abf696d5f64c1e44c3b49313e84e51e709 (patch)
treec1ea2cd15b211d74cae538726d94b77161650cd4 /src/quick/doc/snippets/qmlapp/usecases/animations.qml
parentcfacbf675b4f2881ce151b537d7dc18414037e6e (diff)
Doc: Create a Getting Started section for the Qt Quick module
This commit moves the "Building UIs with Qt Quick" tree section to the Qt Quick module as a getting started subtree. Changes: qtquick-debugging.html - moved to concepts/Debugging qtquick-deployment.html - moved to concepts/Deployment qtquick-performance.html - moved to concepts/Performance qml-codingconventions.html - moved to guidelines/Coding Conventions scalability.html - moved to guidelines/Scalability qtquick-qml-runtime.html - moved to the qml module "Use Case" topics moved to Getting Started: Visual Elements In QML -> Visual types Positioners and Layouts In QML -> Positioners and layouts Responding To User Input in QML -> Handling user input Displaying Text In QML -> Displaying text Animations In QML -> Animations Style And Theme Support -> was deleted (it had almost zero useful info) Integrating JavaScript in QML -> Integrating JavaScript in QML Task-number: QTBUG-134130 Pick-to: 6.10 6.9 Change-Id: I14c8e4abadc587fbba788b7ce479c3a8364d0a42 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Kai Köhne <kai.koehne@qt.io>
Diffstat (limited to 'src/quick/doc/snippets/qmlapp/usecases/animations.qml')
-rw-r--r--src/quick/doc/snippets/qmlapp/usecases/animations.qml146
1 files changed, 146 insertions, 0 deletions
diff --git a/src/quick/doc/snippets/qmlapp/usecases/animations.qml b/src/quick/doc/snippets/qmlapp/usecases/animations.qml
new file mode 100644
index 0000000000..52a29d41bc
--- /dev/null
+++ b/src/quick/doc/snippets/qmlapp/usecases/animations.qml
@@ -0,0 +1,146 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+//![0]
+import QtQuick
+
+Item {
+
+ width: 320
+ height: 480
+
+ Rectangle {
+ color: "#272822"
+ width: 320
+ height: 480
+ }
+
+ Column {
+ //![states]
+
+ Item {
+ id: container
+ width: 320
+ height: 120
+
+ Rectangle {
+ id: rect
+ color: "red"
+ width: 120
+ height: 120
+
+ TapHandler {
+ onTapped: container.state === '' ? container.state = 'other' : container.state = ''
+ }
+ }
+ states: [
+ // This adds a second state to the container where the rectangle is farther to the right
+
+ State { name: "other"
+
+ PropertyChanges {
+ target: rect
+ x: 200
+ }
+ }
+ ]
+ transitions: [
+ // This adds a transition that defaults to applying to all state changes
+
+ Transition {
+
+ // This applies a default NumberAnimation to any changes a state change makes to x or y properties
+ NumberAnimation { properties: "x,y" }
+ }
+ ]
+ }
+ //![states]
+ //![behave]
+ Item {
+ width: 320
+ height: 120
+
+ Rectangle {
+ color: "green"
+ width: 120
+ height: 120
+
+ // This is the behavior, and it applies a NumberAnimation to any attempt to set the x property
+ Behavior on x {
+
+ NumberAnimation {
+ //This specifies how long the animation takes
+ duration: 600
+ //This selects an easing curve to interpolate with, the default is Easing.Linear
+ easing.type: Easing.OutBounce
+ }
+ }
+
+ TapHandler {
+ onTapped: parent.x == 0 ? parent.x = 200 : parent.x = 0
+ }
+ }
+ }
+ //![behave]
+ //![constant]
+ Item {
+ width: 320
+ height: 120
+
+ Rectangle {
+ color: "blue"
+ width: 120
+ height: 120
+
+ // By setting this SequentialAnimation on x, it and animations within it will automatically animate
+ // the x property of this element
+ SequentialAnimation on x {
+ id: xAnim
+ // Animations on properties start running by default
+ running: false
+ loops: Animation.Infinite // The animation is set to loop indefinitely
+ NumberAnimation { from: 0; to: 200; duration: 500; easing.type: Easing.InOutQuad }
+ NumberAnimation { from: 200; to: 0; duration: 500; easing.type: Easing.InOutQuad }
+ PauseAnimation { duration: 250 } // This puts a bit of time between the loop
+ }
+
+ TapHandler {
+ // The animation starts running when you click within the rectangle
+ onTapped: xAnim.running = true
+ }
+ }
+ }
+ //![constant]
+
+ //![scripted]
+ Item {
+ width: 320
+ height: 120
+
+ Rectangle {
+ id: rectangle
+ color: "yellow"
+ width: 120
+ height: 120
+
+ TapHandler {
+ // The animation starts running when you click within the rectangle
+ onTapped: anim.running = true;
+ }
+ }
+
+ // This animation specifically targets the Rectangle's properties to animate
+ SequentialAnimation {
+ id: anim
+ // Animations on their own are not running by default
+ // The default number of loops is one, restart the animation to see it again
+
+ NumberAnimation { target: rectangle; property: "x"; from: 0; to: 200; duration: 500 }
+
+ NumberAnimation { target: rectangle; property: "x"; from: 200; to: 0; duration: 500 }
+ }
+ }
+ //![scripted]
+ }
+}
+//![0]