当前位置: 首页 > news >正文

Qml自定义组件之车辆风扇展示

上面表示空调系统,有风在吹动,可以调节风速和风向

实现思路:

1、让美工准备风吹动效果的多张png图片,如下,且名称按顺序命名好:

2、利用Image元素显示这些图片

3、利用Timer定时器元素不停的切换Image元素的显示的图片,从而出现动图的效果

4、缩短定时器的超时间隔,则图片显示切换加快,则风速加快。拉长定时器的超时间隔,则图片显示切换变慢,则风速变慢

5、利用transform属性,让他绕着x轴旋转,来模拟风向的变化

6、当然也可以用AnimatedImage元素直接显示动图,但动图需要是webp格式的高清动图,gif格式的会很糊

代码如下:

先是自定义的Wind组件

import QtQuick
import QtQuick.ControlsItem {//暴露属性:总帧数,即显示多少张图片property int frameCnt:10//暴露属性:播放速度,大于1则加快,小于1则变慢property double speed: 1//组件生成时开启定时器Component.onCompleted: {timer.start()}Image {id: img//声明属性当前帧property int currentFrame: 0anchors.fill: parent//图片文件的命名和当前帧绑定source: "./wind/wind_"+currentFrame+".png"fillMode: Image.PreserveAspectFit}//通过定时器不停的变更图片当前显示的画面Timer{id:timer//间隔越小,则速度越快,默认1000/30ms为正常速度(即30帧/秒)//绑定speed,speed大于1,则间隔变短,画面切换越快interval: 1000/30/speedrepeat: true;//每次超时时更新当前帧,则图片源也会跟着变化,则实现了动图的显示onTriggered: {if(img.currentFrame<frameCnt-1){img.currentFrame++}else{img.currentFrame=0;}}}}

然后使用

import QtQuick
import QtQuick.ControlsWindow {id:rootwidth: 640height: 480visible: truetitle: qsTr("Hello World")Rectangle{id:rectanchors.fill: parentcolor: "black"Wind{width: 200height: 200anchors.centerIn: parentframeCnt: 145speed: s2.value//绑定风速滑动条的值,滑动条一变化,则播放速度就会变化//利用变换,绕着x轴上下旋转。模拟风向的变化transform: [Rotation{angle:s1.value//角度绑定风向滑动条的值,滑动条一变化,则风向就会变化origin.x:width/2origin.y:0axis.x:1//绕着x轴旋转axis.y:0axis.z:0}]}//调整风向的滑动条Column{spacing: 10anchors.left: rect.leftanchors.leftMargin: 20anchors.verticalCenter: rect.verticalCenterLabel{id:lbl1text: "Y"font.family: "Microsoft Yahei"color: "white"}Slider{id:s1anchors.horizontalCenter: lbl1.horizontalCenterwidth: 50height: 200from: -20to:180value: 80orientation: Qt.Vertical}}//调整风速的滑动条Row{id:rowspacing: 10anchors.bottom: rect.bottomanchors.bottomMargin: 20anchors.horizontalCenter: rect.horizontalCenterLabel{id:lbl2text: "风速"font.family: "Microsoft Yahei"color: "white"anchors.bottom: row.bottom}Slider{id:s2anchors.verticalCenter:  lbl2.verticalCenterwidth: 200height: 50stepSize: 0.1from: 0to:5value: 1orientation: Qt.Horizontal}}}
}

 

http://www.dtcms.com/a/190056.html

相关文章:

  • TypeScript装饰器:从入门到精通
  • PyTorch中mean(dim=1)的深度解析
  • k8s 中使用 Service 访问时NetworkPolicy不生效问题排查
  • ubuntu24.04上安装NVIDIA driver+CUDA+cuDNN+Anaconda+Pytorch
  • 计算机视觉最不卷的方向:三维重建学习路线梳理
  • 分布式2(Zookeeper )
  • ubuntu 22.04 wifi网卡配置地址上网
  • OpenHarmony轻量系统--BearPi-Nano开发板网络程序测试
  • 常见排序算法及其java实现
  • Redis缓存穿透、雪崩、击穿的解决方案?
  • 基于OpenCV中的图像拼接方法详解
  • Python----神经网络(《Searching for MobileNetV3》论文概括和MobileNetV3网络)
  • 前端安全:XSS、CSRF 防御与最佳实践
  • 【漫话机器学习系列】259.神经网络参数的初始化(Initialization Of Neural Network Parameters)
  • AI与机器学习深度集成:从设备端能力爆发到开发工具智能化
  • C++笔记-AVL树(包括单旋和双旋等)
  • 比亚迪固态电池突破:王传福的技术哲学与产业重构|创客匠人热点评述
  • 第29节:现代CNN架构-Inception系列模型
  • 深度学习中的查全率与查准率:如何实现有效权衡
  • 在RAG中 如何提高向量搜索的准确性?
  • 视频编解码学习十二之Android疑点
  • openfeign 拦截器实现微服务上下文打通
  • 【机器人】复现 SG-Nav 具身导航 | 零样本对象导航的 在线3D场景图提示
  • react中安装依赖时的问题 【集合】
  • FPGA:Xilinx Kintex 7实现DDR3 SDRAM读写
  • b站视频如何下载到电脑——Best Video下载器
  • 昆士兰科技大学无人机自主导航探索新框架!UAVNav:GNSS拒止与视觉受限环境中的无人机导航与目标检测
  • 算法第十八天|530. 二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先
  • Agent Builder API - Agent Smith 扩展的后端服务(开源代码)
  • 学习机器学习的体会与姓名性别预测案例分析