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

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

缩放动画

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

  • 代码

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位置作为动画参考实现位移动画。1917c903e49810fada59ef8dc4c92bbe.gif

  • 代码

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实现渐变动画。5c918a93f304de9334cb65635b4911f4.gif

  • 代码

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)。

关于更多

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527429.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚拟机中ubuntu可以使用显卡吗_在KVM下使用ubuntu19.10安装Anbox

导言:Anbox是一个Android模拟器,可以从linux系统运行Android应用程序或游戏。对于Anbox的安装已经有了各种教程,主要针对ubuntu18.04之前的版本。最近在做一个关于虚拟机中跑安卓的项目,因此在虚拟机中使用ubuntu18.04系统&#x…

mysql tree_MySQL树形遍历(二)

转载自:http://blog.csdn.net/dreamer0924/article/details/7580278英文原文:http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/预排序遍历树算法:modified preorder tree traversal algorithm这个算法有如下几个数据结构1 lft 代表左 left2 r…

mysql 常用数据库连接池_常见的数据库连接池

欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入 2.C3P0 在Hibernate和Spring中默认支持该数据库连接池 需要引入:c3p0-0.9.1.2.jar包,如果报错再引入mchange-commons-0.2.jar 1. 在类路径下编写一个c3p0-config.xml文件 c3p0-co…

win32_bios 的对象编辑器无法保存对象_怎样创建Femap对象

创建Femap对象主要有两种方式,一是直接在Femap内置的API程序窗体中创建,二是在API程序窗口以外的开发环境中创建。一、使用FEMAP集成的API程序窗口开始使用FEMAP API的最快方法是打开API编程窗口。它提供了一个完整的编辑、调试和运行的环境,…

未定义变量: data_三、变量声明

三、变量声明var声明主要特点: - var是函数作用域,只针对函数声明 - 可以多次声明同一个变量不会报错 - 捕获变量怪异之处function fnVar(flag: boolean) {if(flag) {var x 10;}return x; } fnVar(true); // 10 fnVar(false); // undefinedvar isDone: …

表单的默认提交方式_对于PHP表单提交有哪集中方式讲解

PHP 做网页后端还是很优秀的&#xff0c;PHP 表单提交&#xff0c;不外乎两种方法&#xff0c;即 GET 和 POST 方法&#xff1b;PHP后台使用全局变量$_POST;$_GET;来获取提交数据。代码&#xff1a;<!DOCTYPE HTML> <html> <head><meta charset"utf-…

spring中怎么让事物提交_Spring怎么在一个事务中开启另一个事务

点击上方“Java知音”&#xff0c;选择“置顶公众号”技术文章第一时间送达&#xff01;作者&#xff1a;Mazinmy.oschina.net/u/3441184/blog/893628Spring项目&#xff0c;需要在一个事务中开启另一个事务。上面提到的情景可能不常见&#xff0c;但是还是会有的&#xff0c;一…

通过对象指针的方式强行指定到子类_C++中的虚指针与虚函数表

​ 最近在逛B站的时候发现有候捷老师的课程&#xff0c;如获至宝。因此&#xff0c;跟随他的讲解又复习了一遍关于C的内容&#xff0c;收获也非常的大&#xff0c;对于某些模糊的概念及遗忘的内容又有了更深的认识。以下内容是关于虚函数表、虚函数指针&#xff0c;而C中的动态…

如何手动输入给数组赋值_你是否真的了解VBA数组呢?让我带你认识一下真正的数组...

大家好&#xff0c;我们今日继续讲解VBA代码解决方案的第110讲内容&#xff1a;VBA数组讲解&#xff0c;什么是数组&#xff0c;如何定义数组&#xff0c;如何创建数组一、什么是数组 就是数组共享一个名字&#xff0c;有着多个元素按顺序排列的变量。在数组中&#xff0c;元素…

路由器装上去没有网络_5G网络那么快,今后路由器没有存在的价值了?

从一些宣传来看&#xff0c;即将商用的5G网速确实很快&#xff0c;号称10Gbps&#xff0c;比有线宽带还要快。既然5G网速那么快了&#xff0c;还有必要装宽带和路由器吗?先来纠正一个误区&#xff0c;5G网络的理论速度与实际速度是有很大差别的!!目前很多宣传中所说的5G网速最…

python绘制散点图的步骤_python如何绘制散点图?

饼图&#xff1a;饼图显示静态数字以及类别如何表示整体构成的一部分。饼图以百分比表示数字&#xff0c;所有段的总和需要等于100&#xff05;。plt.pie(df[Age], labels {"A", "B", "C","D", "E", "F","G…

python问卷调查系统设计案例_从设计到施工,全面剖析超级玻璃屋面系统案例!...

【设计师的材料清单】戳图即可购买《设计师的材料清单》实体书或获取高清电子书转载整理自&#xff1a;弗思特(ID&#xff1a;FFTCCL)各位设计师大家好&#xff01;随着人们对建筑外观及内部环境要求的不断提高具有大面积采光且轻盈的玻璃屋面系统在大型公共建筑设计中被广泛使…

二叉树的建立与遍历完整代码_腾讯面试官这样问我二叉树,我刚好都会

前记上周我投递出了简历&#xff0c;岗位是后端开发工程师。这周腾讯面试官给我进行了视频面试。面试过程中他问了二叉树的问题。二叉树相关算法题&#xff0c;在面试中出现的次数非常非常多&#xff0c;所以我面试之前也有所准备。今天结合面试问题详细讲一讲二叉树&#xff0…

创建mysql数据库图解_mysql数据库怎么创建外键?(图文+视频)

本篇文章主要给大家介绍mysql数据库怎么创建外键。关于mysql数据库外键的基础介绍&#xff0c;我们在这篇文章【Mysql外键是什么&#xff1f;有哪些用处&#xff1f;】中&#xff0c;已经给大家介绍过了&#xff0c;需要的朋友可以选择参考。了解了外键的基础定义&#xff0c;那…

redis 管理工具_Redis桌面管理工具Redis Desktop Manager 2019.2发布

简介Redis桌面管理器(又名RDM) - 是适用于Windows&#xff0c;Linux和MacOS的快速开源Redis数据库管理应用程序。该工具为您提供了一个易于使用的GUI&#xff0c;可以访问您的Redis数据库并执行一些基本操作&#xff1a;将键视为树&#xff0c;CRUD键&#xff0c;通过shell执行…

sql in里面可以放多少参数_如何从文本文件读入 SQL 参数

有时我们希望把参数列表分行存储在文本文件里&#xff0c;执行SQL时再拼到in函数里&#xff0c;从而查询出符合条件的记录。但SQL不能解析文本文件&#xff0c;直接拼到in函数里有困难&#xff0c;所以很多人先把文件导入数据库临时表&#xff0c;再用join语句做关联&#xff0…

谷歌浏览器32位安装包_谷歌浏览器发布紧急安全更新修复Blink内核中的任意代码执行漏洞...

上月底谷歌浏览器推送紧急安全更新对浏览器漏洞进行修复&#xff0c;当时谷歌浏览器博客并未公布漏洞的具体细节信息。蓝点网当时也在文章中称通常这种不公布漏洞的更新&#xff0c;都是比较严重的问题因此只有等多数用户修复后才会公开。现在多数能够自动更新的用户已经升级到…

java的serversocket_Java ServerSocket 实现聊天室功能(简易版)

大体实现功能可以选择房间&#xff0c;可以与房间中的用户进行实时的交流说在前面的话:serverSocket.accept() 会形成阻塞scanner.hasNextLine() 和 scanner.nextLine() 也会形成阻塞windows 下需要打开telnet服务。请自行百度实现思路:用户连接上服务器后选择房间号&#xff0…

ensp删除所有命令_HCIA学习笔记——eNSP配置NAT技术

今天用华为的eNSP做了关于NAT的实验&#xff0c;我把它发了出来&#xff0c;有需要的小伙伴可以收藏一下。分别配置了静态的NAT&#xff0c;NAT Outbound配置&#xff0c;Easy IP配置&#xff0c;NAT server配置。接口配置如图所示。在网关路由器上配置访问外网的默认路由。配置…

java程序员用代码写的情书_用代码写的三行情诗,你懂得程序员的浪漫吗?

原标题&#xff1a;用代码写的三行情诗&#xff0c;你懂得程序员的浪漫吗&#xff1f;在一般人眼里&#xff0c;程序员是一群古板&#xff0c;技术宅&#xff0c;不懂得浪漫的屌丝&#xff0c;但其实这些大神们浪漫起来也是相当可以的&#xff01;下面让我们来看一下程序员们用…