QML 動畫控制、順序動畫與并行動畫

目錄

    • 引言
    • 相關閱讀
    • 基礎屬性說明
    • 工程結構
    • 示例代碼解析
      • 示例1:手動控制動畫(ControlledAnimation.qml)
      • 示例2:順序動畫(SequentialAnimationDemo.qml)
      • 示例3:并行動畫(ParallelAnimationDemo.qml)
    • 總結
    • 工程下載

引言

接上文:QML 屬性動畫、行為動畫與預定義動畫。本文繼續通過QML示例,介紹兩種動畫(順序動畫SequentialAnimation和并行動畫ParallelAnimation)如何使用,并附帶完整的示例代碼。

相關閱讀

  • ParallelAnimation官方文檔
  • SequentialAnimation官方文檔

基礎屬性說明

屬性類型說明
targetObject動畫作用的目標對象
propertystring需要動畫化的屬性名稱
durationint動畫持續時間(毫秒)
easing.typeenumeration緩動曲線類型(如Easing.InOutQuad)
runningbool控制動畫運行狀態

工程結構

qml_animation/
├── CMakeLists.txt
├── Main.qml          # 主界面
├── ControlledAnimation.qml      # 手動控制動畫
├── SequentialAnimationDemo.qml  # 順序動畫示例
├── ParallelAnimationDemo.qml    # 并行動畫示例
├── images.qrc        # 資源文件
└── main.cpp          # 程序入口

示例代碼解析

示例1:手動控制動畫(ControlledAnimation.qml)

import QtQuick
import QtQuick.ControlsRectangle {width: 400height: 400AnimatedImage {id: controlImgsource: "qrc:/images/huaji.gif"x: 0y: 150width: 100height: 100}NumberAnimation {id: controlledAnimtarget: controlImgproperty: "x"from: 0to: 300duration: 1500}Row {anchors.bottom: parent.bottomspacing: 10Button {text: "開始"onClicked: controlledAnim.start()}Button {text: "暫停"onClicked: controlledAnim.pause()}Button {text: "恢復"onClicked: controlledAnim.resume()}Button {text: "停止"onClicked: controlledAnim.stop()}Button {text: "重啟"onClicked: controlledAnim.restart()}}
}

代碼說明

這段代碼通過組合使用 QML 的各種元素和控件,實現了對一個表情包移動動畫的控制功能,用戶可以通過點擊不同的按鈕來控制表情包的移動動畫的開始、暫停、恢復、停止和重啟。

其中NumberAnimation用于控制表情包的水平移動。設置了動畫的目標對象(target)為 controlImg(即前面定義的表情包動態圖),要控制的屬性(property)為 “x”(水平坐標)。動畫的起始位置(from)為 0,結束位置(to)為 300 像素,動畫持續時間(duration)為 1500 毫秒。

運行效果

請添加圖片描述


示例2:順序動畫(SequentialAnimationDemo.qml)

import QtQuick
import QtQuick.ControlsRectangle {width: 400height: 400SequentialAnimation {id: seqAnimationrunning: falseNumberAnimation { target: rect1; property: "rotation"; from: 0; to: 315; duration: 500 }NumberAnimation { target: rect2; property: "rotation"; from: 0; to: 315; duration: 500 }NumberAnimation { target: rect3; property: "rotation"; from: 0; to: 315; duration: 500 }}Row {spacing: 20anchors.centerIn: parentRectangle {id: rect1width: 80height: 80color: "pink"}Rectangle {id: rect2width: 80height: 80color: "cyan"}Rectangle {id: rect3width: 80height: 80color: "lime"}}Button {text: "啟動動畫"anchors.bottom: parent.bottomonClicked: {seqAnimation.start()}}
}

代碼說明

這段代碼通過組合使用 QML 的各種元素和控件,實現了三個彩色矩形的旋轉動畫效果,并通過按鈕來控制動畫的啟動。用戶點擊 “啟動動畫” 按鈕后,三個矩形會按照預先定義的動畫序列依次旋轉。

SequentialAnimation用于定義一個動畫序列,動畫會按照添加的順序依次執行。設置了動畫序列的初始狀態為不運行(running: false)。
定義了三個NumberAnimation元素,每個動畫都控制一個矩形(rect1、rect2、rect3)的旋轉屬性(rotation),起始角度為 0,結束角度為 315 度,動畫持續時間均為 500 毫秒。

運行效果

請添加圖片描述


示例3:并行動畫(ParallelAnimationDemo.qml)

import QtQuick
import QtQuick.ControlsRectangle {width: 400height: 400ParallelAnimation {id: palAnimationrunning: falseNumberAnimation { target: rect1; property: "rotation"; from: 0; to: 315; duration: 500 }NumberAnimation { target: rect2; property: "rotation"; from: 0; to: 315; duration: 500 }NumberAnimation { target: rect3; property: "rotation"; from: 0; to: 315; duration: 500 }}Row {spacing: 20anchors.centerIn: parentRectangle {id: rect1width: 80height: 80color: "pink"}Rectangle {id: rect2width: 80height: 80color: "cyan"}Rectangle {id: rect3width: 80height: 80color: "lime"}}Button {text: "啟動動畫"anchors.bottom: parent.bottomonClicked: {palAnimation.start()}}
}

代碼說明

運行效果

請添加圖片描述


總結

通過本文中的三個示例,進行如下總結:

  • 手動控制動畫適合需要精確控制動畫生命周期的場景
  • 順序動畫適用于需要分步執行的動畫序列
  • 并行動畫可提升多個動畫元素的協同表現力

工程下載

Gitcode項目地址:GitCode -> QML 動畫示例

在這里插入圖片描述
在之前的項目上增加了3個示例,實現了一個主界面(main.qml),基于swipeview為容器,展示6個示例。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/81135.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/81135.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/81135.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PowerShell 實現 conda 懶加載

問題 執行命令conda init powershell會在 profile.ps1中添加conda初始化的命令。 即使用戶不需要用到conda,也會初始化conda環境,拖慢PowerShell的啟動速度。 解決方案 本文展示了如何實現conda的懶加載,默認不加載conda環境,只…

R語言學習--Day03--數據清洗技巧

在一般情況下,我們都是在數據分析的需求前提下去選擇使用R語言。而實際上,數據分析里,百分之八十的工作,都是在數據清洗。并不只是我們平時會提到的異常值處理或者是整合格式,更多會涉及到將各種各樣的數據整合&#x…

谷歌地圖代理 | 使用 HTML 和矢量模式 API 更輕松地創建 Web 地圖

在過去的一年里,谷歌對 Maps JavaScript API 進行了兩項重要更新,以便更輕松地采用我們最新、最好的地圖:HTML 地圖和矢量模式 API。今天谷歌地圖亞太區最大代理商之一的 Cloud Ace云一 為大家介紹一下更新的具體內容。 聯系我們 - Cloud Ac…

WL-G4048 Multi-Port PCIe 4.0 Switch

系列文章目錄 文章目錄 系列文章目錄《WL-G4048 Multi-Port PCIe 4.0 Switch數據手冊》總結一、芯片介紹二、芯片規格介紹(一)功能指標(二)管理調試和監控(三)參考時鐘(四)系統復位 …

召回11:地理位置召回、作者召回、緩存召回

GeoHash 召回 屬于地理位置召回,用戶可能對附近發生的事情感興趣。GeoHash 是一種對經緯度的編碼,地圖上每個單位矩形的 GeoHash 的前幾位是相同的,GeoHash 編碼截取前幾位后,將相同編碼發布的內容按時間順序(先是時間…

高效批量合并Word文檔的工具介紹

軟件介紹 本文介紹一款專門用于批量合并Word文檔的工具,名為批量合并word工具。 使用方法與特點 如果需要將多個Word文檔合并到一個Word文檔中,就可以使用這款工具。使用前,需把要合并的Word文檔都放在名為“word”的文件夾下。 該軟件沒有…

機器學習入門之KNN算法和交叉驗證與超參數搜索(三)

機器學習入門之KNN算法和交叉驗證與超參數搜索(三) 文章目錄 機器學習入門之KNN算法和交叉驗證與超參數搜索(三)一、KNN算法-分類1. 樣本距離判斷明可夫斯基距離 2. KNN 算法原理3. KNN 的缺點4. KNN 的 API5. 使用 sklearn 實現 …

小剛說C語言刷題—1700請輸出所有的2位數中,含有數字2的整數

1.題目描述 請輸出所有的 2 位數中,含有數字 2 的整數有哪些,每行 1個,按照由小到大輸出。 比如: 12、20、21、22、23… 都是含有數字 2的整數。 輸入 無 輸出 按題意要求由小到大輸出符合條件的整數,每行 1 個。…

在MYSQL中導入cookbook.sql文件

參考資料: GitHub 項目:svetasmirnova/mysqlcookbook CSDN 博客:https://blog.csdn.net/u011868279/category_11645577.html 建庫: mysql> use mysql Reading table information for completion of table and column names …

Scrapy框架下地圖爬蟲的進度監控與優化策略

1. 引言 在互聯網數據采集領域,地圖數據爬取是一項常見但具有挑戰性的任務。由于地圖數據通常具有復雜的結構(如POI點、路徑信息、動態加載等),使用傳統的爬蟲技術可能會遇到效率低下、反爬策略限制、任務進度難以監控等問題。 …

【Win32 API】 lstrcmpA()

作用 比較兩個字符字符串(比較區分大小寫)。 lstrcmp 函數通過從第一個字符開始檢查,若相等,則檢查下一個,直到找到不相等或到達字符串的末尾。 函數 int lstrcmpA(LPCSTR lpString1, LPCSTR lpString2); 參數 lpStr…

代碼隨想錄60期day38

2維背包 #include<bits/stdc.h> using namespace std;int main(){int n,bagweight;cin>>n>>bagweight;vector<int>weight(n,0);vector<int>value(n,0);for(int i 0 ; i <n;i){cin>>weight[i];}for(int j 0;j<n;j){cin>>val…

[模型部署] 1. 模型導出

&#x1f44b; 你好&#xff01;這里有實用干貨與深度分享?? 若有幫助&#xff0c;歡迎&#xff1a;? &#x1f44d; 點贊 | ? 收藏 | &#x1f4ac; 評論 | ? 關注 &#xff0c;解鎖更多精彩&#xff01;? &#x1f4c1; 收藏專欄即可第一時間獲取最新推送&#x1f514;…

mac的Cli為什么輸入python3才有用python --version顯示無效,pyenv入門筆記,如何查看mac自帶的標準庫模塊

根據你的終端輸出&#xff0c;可以得出以下結論&#xff1a; 1. 你的 Mac 當前只有一個 Python 版本 系統默認的 Python 3 位于 /usr/bin/python3&#xff08;這是 macOS 自帶的 Python&#xff09;通過 which python3 確認當前使用的就是系統自帶的 Pythonbrew list python …

Java注解詳解:從入門到實戰應用篇

1. 引言 Java注解&#xff08;Annotation&#xff09;是JDK 5.0引入的一種元數據機制&#xff0c;用于為代碼提供附加信息。它廣泛應用于框架開發、代碼生成、編譯檢查等領域。本文將從基礎到實戰&#xff0c;全面解析Java注解的核心概念和使用場景。 2. 注解基礎概念 2.1 什…

前端方法的總結及記錄

個人簡介 &#x1f468;?&#x1f4bb;?個人主頁&#xff1a; 魔術師 &#x1f4d6;學習方向&#xff1a; 主攻前端方向&#xff0c;正逐漸往全棧發展 &#x1f6b4;個人狀態&#xff1a; 研發工程師&#xff0c;現效力于政務服務網事業 &#x1f1e8;&#x1f1f3;人生格言&…

組件導航 (HMRouter)+flutter項目搭建-混合開發+分欄效果

組件導航 (Navigation)flutter項目搭建 接上一章flutter項目的環境變量配置并運行flutter 1.flutter創建項目并運行 flutter create fluter_hmrouter 進入ohos目錄打開編輯器先自動簽名 編譯項目-生成簽名包 flutter build hap --debug 運行項目 HMRouter搭建安裝 1.安…

城市排水管網流量監測系統解決方案

一、方案背景 隨著工業的不斷發展和城市人口的急劇增加&#xff0c;工業廢水和城市污水的排放量也大量增加。目前&#xff0c;我國已成為世界上污水排放量大、增加速度快的國家之一。然而&#xff0c;總體而言污水處理能力較低&#xff0c;有相當部分未經處理的污水直接或間接排…

TCP/IP 知識體系

TCP/IP 知識體系 一、TCP/IP 定義 全稱&#xff1a;Transmission Control Protocol/Internet Protocol&#xff08;傳輸控制協議/網際協議&#xff09;核心概念&#xff1a; 跨網絡實現信息傳輸的協議簇&#xff08;包含 TCP、IP、FTP、SMTP、UDP 等協議&#xff09;因 TCP 和…

5G行業專網部署費用詳解:投資回報如何最大化?

隨著數字化轉型的加速&#xff0c;5G行業專網作為企業提升生產效率、保障業務安全和實現智能化管理的重要基礎設施&#xff0c;正受到越來越多行業客戶的關注。部署5G專網雖然前期投入較大&#xff0c;但通過合理規劃和技術選擇&#xff0c;能夠實現投資回報的最大化。 在5G行…