如何在Qt Studio中为图片内部添加自定义动画效果

Qt Design Studio 实现设备动效操作步骤
1. 前期准备
- 将上述设备图导入项目后作为底层背景,设置z值为0固定,避免被其他元素遮挡
- 对照图中管路、储罐的位置,分别在对应点位叠加自定义QML元素:箭头可以用
Shape组件绘制或者导入现成的箭头切图,储罐单独做两层,一层是透明的储罐轮廓上层,一层是纯色填充的液位下层,填充层z值要介于背景和储罐轮廓之间。
2. 箭头流动动效实现
两种常用实现方案按需选择:
- 路径移动效果:如果要实现单个/多个箭头沿着管路轨迹循环移动,使用
PathAnimation组件即可,设置循环次数为无限循环就能实现持续流动效果,核心代码参考:
PathAnimation { id: pipeArrowAnim target: flowArrow // 你定义的箭头元素id path: Path { // 按照图里的管路实际坐标写路径点位即可 PathLine { x: 180; y: 120 } PathLine { x: 180; y: 270 } PathLine { x: 320; y: 270 } } duration: 2500 // 单次流动的时长,单位毫秒 loops: Animation.Infinite // 无限循环 }
- 频闪流动效果:如果是模拟断续的箭头流动感,在管路上按间隔排列多个小箭头,给每个箭头的
opacity属性绑定顺序变化的PropertyAnimation,就能模拟出流动效果。
3. 储罐填充/排空动效实现
核心是控制液位填充层的高度属性:
- 首先给储罐液位填充层设置
clip: true,初始高度可设为0对应排空状态 - 用
NumberAnimation控制填充层的height属性,数值从0到储罐轮廓高度就是填充效果,从储罐轮廓高度到0就是排空效果,需要触发动效时调用动画的start()方法即可,核心代码参考:
NumberAnimation { id: tankFill target: tankLevelLayer // 你定义的储罐填充层id property: "height" from: 0 to: tankBg.height // 储罐轮廓元素的高度 duration: 4000 // 填充总时长 }
- 如果需要更真实的液位效果,可以额外加一个小幅度的
NumberAnimation控制填充层y坐标微幅晃动,模拟液位波动。
内容的提问来源于stack exchange,提问作者Karan Sanghavi
相关产品推荐
相关产品推荐

