百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术流 > 正文

Qt编程进阶(53):QML其他动画元素(qt动画教程)

citgpt 2024-07-12 09:51 18 浏览 0 评论

在QML中,其他的动画元素大多继承自PropertyAnimation,主要有NumberAnimation、CoIorAnimation、RotationAnimation和Vector3dAnimation等。其中,NumberAnimation为实数和整数等数值类属性提供了更高效的实现;Vector3dAnimation为矢量3D提供了更高效的支持;而ColorAnimation和RotationAnimation则分别为颜色和旋转动画提供了特定的支持。

下面实例编程演示其他各种动画元素的应用,运行效果如下图所示,其中虚线箭头标示出在程序运行中图形运动变化的轨迹。实现步骤如下。

Qt编程进阶(53):QML其他动画元素(qt动画教程)

(1) 新建项目

新建QML应用程序,项目名称为“OtherAnimations”。

(2) 自定义组件

右击项目视图“Resources”一“qml.qrc”下的“/”节点,选择“Add New...”项,新建“CircleRect.qmI”文件,编写代码如下:

import QtQuick 2.0
Rectangle {
  width: 80
  height: 80
  ColorAnimation on color { // (a)
    from: "blue"
    to: "aqua"
    duration: 10000
    loops: Animation.Infinite
  }
  RotationAnimation on rotation { //(b)
    from: 0
    to: 360
    duration: 10000
    direction: RotationAnimation.Clockwise
    loops: Animation.Infinite
  }
  NumberAnimation on radius { //(c)
    from: 0
    to: 40
    duration: 10000
    loops: Animation.Infinite
  }
  PropertyAnimation on x {
    from: 50
    to: 500
    duration: 10000
    loops: Animation.Infinite
    easing.type : Easing.InOutQuad //先加速,后减速
  }
}

其中,

  • (a) ColorAnimation on color{...}: ColorAnimation动画元素允许颜色值设置from和to属性,这里设置from为blue, to为aqua,即矩形的颜色从蓝色逐渐变化为水绿色。
  • (b) RotationAnimation on rotation{…}: RotationAnimation动画元素允许设定图形旋转的方向,本例通过指定from和to属性,使矩形旋转360°。设direction属性为RotationAnimation.Clockwise表示顺时针方向旋转;如果设为RotationAnimation.Counterclockwise,表示逆时针方向旋转。
  • (c) NumberAnimation on radius:NumberAnimation动画元素是专门应用于数值类型的值改变的属性动画元素,本例用它来改变矩形的圆角半径值。因矩形长宽均为80,将圆角半径设为40可使矩形呈现为圆形,故radius属性值从0变化到40的动画效果是:矩形的四个棱角逐渐磨圆最终彻底成为一个圆形。

(3) 主程序

打开“main.qml”文件,编写代码如下:

import QtQuick 2.12
import QtQuick.Window 2.12
Window {
  width: 640
  height: 150
  visible: true
  title: qsTr("OtherAnimations")
  Rectangle {
    width: 360
    height: 360
    anchors.fill: parent
    CircleRect { //使用组件
   	 x: 50; y: 30
    }
  }
}

运行程序后可看到一个蓝色的矩形沿水平方向滚动,其棱角越来越圆,直至成为一个标准的圆形,同时颜色也在渐变中。

ColorAnimation、RotationAnimation、NumberAnimation等动画元素与PropertyAnimation一样,也都可被运用作为“属性值源”“信号处理”“独立元素”“改变行为”的动画。

————————————————

觉得有用的话请关注点赞,谢谢您的支持!

对于本系列文章相关示例完整代码有需要的朋友,可关注并在评论区留言!

相关推荐

Linux系统中的sudo命令、APT软件包管理器以及Java开发工具包JDK

sudo命令详解:sudo命令允许用户以root权限执行命令,类似于Windows系统中的“以管理员身份运行”。这在需要系统级权限操作时非常有用。更多信息请参考:https://do...

js中arguments详解

一、简介了解arguments这个对象之前先来认识一下javascript的一些功能:其实Javascript并没有重载函数的功能,但是Arguments对象能够模拟重载。Javascrip中每个函数...

firewall-cmd 常用命令

目录firewalldzone说明firewallzone内容说明firewall-cmd常用参数firewall-cmd常用命令常用命令 回到顶部firewalldzone...

epel-release 是什么

EPEL-release(ExtraPackagesforEnterpriseLinux)是一个软件仓库,它为企业级Linux发行版(如CentOS、RHEL等)提供额外的软件包。以下是关于E...

FullGC详解  什么是 JVM 的 GC
FullGC详解 什么是 JVM 的 GC

前言:背景:一、什么是JVM的GC?JVM(JavaVirtualMachine)。JVM是Java程序的虚拟机,是一种实现Java语言的解释器。 它提供了一种独立于操作系统的运行环境,使得Java程序在任...

2024-10-26 08:50 citgpt

使用Spire.Doc组件利用模板导出Word文档
  • 使用Spire.Doc组件利用模板导出Word文档
  • 使用Spire.Doc组件利用模板导出Word文档
  • 使用Spire.Doc组件利用模板导出Word文档
  • 使用Spire.Doc组件利用模板导出Word文档
跨域(CrossOrigin)

1.介绍  1)跨域问题:跨域问题是在网络中,当一个网络的运行脚本(通常时JavaScript)试图访问另一个网络的资源时,如果这两个网络的端口、协议和域名不一致时就会出现跨域问题。    通俗讲...

微服务架构和分布式架构的区别

1、含义不同微服务架构:微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并...

深入理解与应用CSS clip-path 属性
深入理解与应用CSS clip-path 属性

clip-pathclip-path是什么clip-path 是一个CSS属性,允许开发者创建一个剪切区域,从而决定元素的哪些部分可见,哪些部分会被隐藏。通过定义这个剪切路径(clippingpath),您可以创造出非矩形的裁剪...

2024-10-25 11:51 citgpt

HCNP Routing&Switching之OSPF LSA类型(二)
  • HCNP Routing&Switching之OSPF LSA类型(二)
  • HCNP Routing&Switching之OSPF LSA类型(二)
  • HCNP Routing&Switching之OSPF LSA类型(二)
  • HCNP Routing&Switching之OSPF LSA类型(二)
Redis和Memcached的区别详解
Redis和Memcached的区别详解

Redis的作者SalvatoreSanfilippo曾经对这两种基于内存的数据存储系统进行过比较:1.Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更多的数据结构和并支持更丰...

2024-10-25 11:51 citgpt

Request.ServerVariables 大全

Request.ServerVariables("Url")返回服务器地址Request.ServerVariables("Path_Info")客户端提供的路...

python操作Kafka

目录一、python操作kafka1.python使用kafka生产者2.python使用kafka消费者3.使用docker中的kafka二、python操作kafka细...

Runtime.getRuntime().exec详解

Runtime.getRuntime().exec详解概述Runtime.getRuntime().exec用于调用外部可执行程序或系统命令,并重定向外部程序的标准输入、标准输出和标准错误到缓冲池。...

promise.all详解 promise.all是干什么的
promise.all详解 promise.all是干什么的

promise.all详解promise.all中所有的请求成功了,走.then(),在.then()中能得到一个数组,数组中是每个请求resolve抛出的结果。promise.all中只要有一个失败了,走.catch(),在.catch(...

2024-10-24 16:21 citgpt

取消回复欢迎 发表评论: