本文简单介绍Qt的一些动画效果(缩放,位移,渐变)。

缩放动画

  • 将窗口的geometry(位置,大小)属性作为动画参考实现缩放动画。

  • 代码

QWidget *w= new QWidget;w->setWindowTitle(QStringLiteral("缩放动画@Qt君"));w->resize(320, 240);

QLabel *label = new QLabel(w);/* 创建一个动画对象 */QPropertyAnimation *animation = new QPropertyAnimation(label);/* 设置动画持续时长 */animation->setDuration(3000);

/* 设置动画目标 */animation->setTargetObject(label);

/* 设置窗口几何属性(位置,大小)作为动画参考 */animation->setPropertyName("geometry");

/* 设置动画开始坐标和大小(QRect) *//* 居中显示数值计算:160 => (320/2 - 100); 120 => (240/2 - 100) */animation->setStartValue(QRect(160, 120, 0, 0));

/* 设置动画结束坐标和大小(QRect) *//* 居中显示数值计算(差值是基于开始动画的100/2):160 => (160 - 100/2); 70 => (120 - 100/2) */animation->setEndValue(QRect(110, 70, 100, 100));

/* 设置循环次数:-1为无限次 */animation->setLoopCount(-1);/* 开始动画 */animation->start();

w->show();

位移动画

  • 将窗口的pos位置作为动画参考实现位移动画。

  • 代码

QWidget *w= new QWidget;w->setWindowTitle(QStringLiteral("位移动画@Qt君"));w->resize(320, 240);

QLabel *label = new QLabel(w);label->resize(100, 100);

/* 创建一个动画对象 */QPropertyAnimation *animation = new QPropertyAnimation(label);/* 设置动画目标 */animation->setTargetObject(label);

/* 设置窗口的位置作为动画参考 */animation->setPropertyName("pos");

/* 设置动画持续时长 */animation->setDuration(3000);

/* 设置动画开始位置 */animation->setStartValue(QPoint(0, 70));

/* 设置动画结束位置 */animation->setEndValue(QPoint(220, 70));

/* 设置循环次数:-1为无限次 */animation->setLoopCount(-1);

/* 开始动画 */animation->start();

w->show();

渐变动画

  • 使用QGraphicsOpacityEffect配合QPropertyAnimation实现渐变动画。

  • 代码

QWidget *w = new QWidget;w->setWindowTitle(QStringLiteral("渐变动画@Qt君"));w->resize(320, 240);

/* 创建一个不透明效果对象 */QGraphicsOpacityEffect *opacityEffect = new QGraphicsOpacityEffect;opacityEffect->setOpacity(1);

QLabel *label = new QLabel(w);label->setGeometry(110, 70, 100, 100);/* 设置控件的图形效果 */label->setGraphicsEffect(opacityEffect);

/* 创建一个动画对象 */QPropertyAnimation *animation= new QPropertyAnimation(label);

/* 设置动画目标 */animation->setTargetObject(opacityEffect);

/* 设置窗口的不透明度作为动画参考 */animation->setPropertyName("opacity");

/* 设置动画持续时长 */animation->setDuration(3000);

/* 设置动画开始的不透明度 */animation->setStartValue(0);

/* 设置动画结束的不透明度 */animation->setEndValue(1);

/* 设置循环次数:-1为无限次 */animation->setLoopCount(-1);

/* 开始动画 */animation->start();

w->show();

动画的几点要素

  1. 动画的目标(setTargetObject);
  2. 动画目标的参考属性(setPropertyName);
  3. 动画的持续时间(setDuration);
  4. 动画的开始状态(setStartValue);
  5. 动画的结束状态(setEndValue);
  6. 动画循环次数(setLoopCount);
  7. 动画的启动与暂停(start/stop)。

关于更多

  • 本文源码例子在公众号聊天界面回复"入群"后在群文件获取。

qt 在label上以光标位置进行缩放_缩放|位移|渐变简单动画相关推荐

  1. vscode 修改快捷键 (回到上一处光标位置,下一处光标位置)

    前言 如题,很简单的一个问题,因而简单记录之.(之所以记录,是因为经历了小小的波折,觉得很有意思.) 环境 英文版 vscode Ubuntu 14.04 步骤 1)打开快捷键设置界面: File - ...

  2. webstrom 返回上一个光标位置

      看到一个方法,用ctrl+鼠标左键就可以转跳到这个方法,看完了想回到上一个光标的位置应该怎么操作.在百度没找到解决方法,其中的ctrl+alt+键盘方向左键,用了之后是整个电脑屏幕方向的改变,这是 ...

  3. QT 实现Label上画线

    实现功能:Label上有一张图片,用画笔在图像上画线. 一.头文件添加以下函数和变量 QMouseEvent * mouseEvent;void mousePressEvent(QMouseEvent ...

  4. 4.关于QT中的QFile文件操作,QBuffer,Label上添加QPixmap,QByteArray和QString之间的区别,QTextStream和QDataStream的区别,QT内存映射(

     新建项目13IO 13IO.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gui widgets network CON ...

  5. quill光标位置插入html,quill编辑器+word文档上传,插入指定位置

    官方quill没有直接给出插入html的方式 类似,下面两个方法,是quill框架提供的,但是并没有提供可以在指定光标位置插入html quill.pasteHTML:这个方法已经废弃了,但目前还是可 ...

  6. fixed定位 input在IOS设备上光标位置异常问题

    页面是个长页面,点击页面不同部分,会弹出弹窗,如果用absolute定位,那么弹窗的位置就难以定位,因而决定采用fixed定位,此时在IOS 11.2.x 系统中就 会出现点击input光标位置异常的 ...

  7. vue 获取input光标位置,并实现插入模板语法。

    点击上面的模板说明,可以在输入框的光标位置插入相应的语法. <el-form-item label="模板说明:" v-if="form.news_type===' ...

  8. contentEditable,window.getSelection详解---可编辑div,容器,设置/获取光标位置,光标处插入内容及光标的操作

    这周碰到一个东西,contentEditable ,它是用来指定一个元素是否是可编辑的,这也是富文本编辑器实现的底层支持,网上关于这部分东西的资料比较少或者不全,所以我来整理下关于这个属性,和可编辑区 ...

  9. JavaScript 中获取光标位置

    1.概念和原理 DOM中并没有直接获取光标位置的方法,那么我们只能间接来获取光标位置.DOM支持获取光标选中的范围,我们可以以此为切入点,来获取或定位光标的位置,当选取范围起始点和结束点一样时,就是光 ...

最新文章

  1. esxi vsphere的端口_vSphere Client 6.0 更改 ESXESXi 主机的端口
  2. 初学者学python好还是c-入门是不是应该选择C而不是直接学Python?
  3. RocketMQ--生产者与消费者的简单示例
  4. Docker 的基本原理及快速入门
  5. 车已经买有近一个月了,技术也在提升中
  6. Cookie详解整理
  7. python 运维包_基础入门_Python-模块和包.运维开发中__import__动态导入最佳实践?
  8. ASP .NET Core 2.0 MVC 发布到 IIS 上以后 无法下载apk等格式的文件
  9. 关于spring+springMVC+myBatis的一些基础配置以及整合
  10. Java菜鸟教程 if语句和switch语句
  11. Linux的时间戳换算
  12. php三级分销思路 数据库设计_微信分销相关的数据表结构设计
  13. [NOI 2014]起床困难综合症
  14. 常用U盘量产工具下载
  15. win7环境下计算机互联,win7系统多台电脑互联起来的操作方法
  16. Lambda表达式和方法引用综合案例(获取年龄最大的两个用户的 姓)
  17. 安装完ubuntu系统后的优化
  18. Shinobi开源监控项目安装
  19. Eclipse插件简介
  20. Blos查看计算机硬盘,如何在bios查看硬盘

热门文章

  1. Quick BI v3.0版本全新起航——2018杭州云栖大会
  2. Gartner:2025年有效细分市场中过半企业的 IT 支出将转向云
  3. DevOps:从「蒸汽时代」到「高铁时代」,SUNMI DevOps转型之路 | 原力计划
  4. 【建议珍藏系列】如果你这样回答「什么是线程安全」,面试官都会对你刮目相看!...
  5. 聊聊我是如何在面试别人Spring事务时“套路”对方的
  6. FB接连出事儿?上亿用户记录在亚马逊云服务器上就公之于众了……下滑到第七?领英说苹果怎么就不受雇员欢迎了呢? | 极客头条...
  7. 44年前的今天,改变世界的TA诞生了! | 极客头条
  8. 分布式系统与消息投递
  9. Java 10新特性解密
  10. c oracle实体模型,ADO.NET实体数据模型详细介绍