QPropertyAnimation 几行代码快速制作流畅的动画效果
简介
以例代劳
头文件
- #ifndef MAINWINDOW_H
- #define MAINWINDOW_H
- #include <QMainWindow>
- namespace Ui {
- class MainWindow;
- }
- class MainWindow : public QMainWindow
- {
- Q_OBJECT
- public:
- explicit MainWindow(QWidget *parent = 0);
- ~MainWindow();
- private:
- Ui::MainWindow *ui;
- };
- #endif // MAINWINDOW_H
cpp文件
- #include <QPropertyAnimation>
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
- MainWindow::MainWindow(QWidget *parent) :
- QMainWindow(parent),
- ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- /* 声明动画类,并将控制对象 this (this一定是继承自QObject的窗口部件) 以及属性名 "geometry" 传入构造函数 */
- QPropertyAnimation* animation = new QPropertyAnimation(this, "geometry");
- /* 设置动画持续时长为 2 秒钟 */
- animation->setDuration(2000);
- /* 设置动画的起始状态 起始点 (1,2) 起始大小 (3,4) */
- animation->setStartValue(QRect(1, 2, 3, 4));
- /* 设置动画的结束状态 结束点 (100,200) 结束大小 (300,400) */
- animation->setEndValue(QRect(100, 200, 300, 400));
- /* 设置动画效果 */
- animation->setEasingCurve(QEasingCurve::OutInExpo);
- /* 开始执行动画 QAbstractAnimation::DeleteWhenStopped 动画结束后进行自清理(效果就好像智能指针里的自动delete animation) */
- animation->start(QAbstractAnimation::DeleteWhenStopped);
- }
- MainWindow::~MainWindow()
- {
- delete ui;
- }
- void OEasyWebNotice::onShow() {
- QRect rect = QApplication::desktop()->availableGeometry();
- const int &endy = rect.height() - height();
- QPropertyAnimation *animation= new QPropertyAnimation(this,"pos");
- animation->setDuration(2000);
- animation->setStartValue(QPoint(rect.width() - width(), rect.height()));
- animation->setEndValue(QPoint(rect.width() - width(), endy));
- animation->setEasingCurve(QEasingCurve::OutCubic);
- connect(animation, SIGNAL(finished()),
- this, SLOT(animationFinished()));
- show();
- animation->start(QAbstractAnimation::DeleteWhenStopped);
- }
- void OEasyWebNotice::onClose(void) {
- disconnect(closeButton_.get(),SIGNAL(clicked()),
- this, SLOT(onClose()));
- QPropertyAnimation* animation = new QPropertyAnimation(this, "windowOpacity");
- animation->setDuration(1000);
- animation->setStartValue(1);
- animation->setEndValue(0);
- animation->setEasingCurve(QEasingCurve::InCirc);
- connect(animation, SIGNAL(finished()),
- this, SLOT(deleteLater()));
- show();
- animation->start(QAbstractAnimation::DeleteWhenStopped);
- }
关于 QPropertyAnimation 我为大家推荐一个我写的项目
QPropertyAnimation 几行代码快速制作流畅的动画效果的更多相关文章
- Photoshop将普通照片快速制作二次元漫画风格效果
今天为大家分享Photoshop将普通照片快速制作二次元漫画风格效果,教程很不错,对于喜欢漫画的朋友可以参考本文,希望能对大家有所帮助! 一提到日本动画电影,大家第一印象肯定是宫崎骏,但是日本除了宫崎 ...
- window.requestAnimationFrame()的使用,处理更流畅的动画效果
https://blog.csdn.net/w2765006513/article/details/53843169 window.requestAnimationFrame()的使用 2016年12 ...
- 3行代码快速实现Spring Boot Oauth2服务
这里的3行代码并不是指真的只需要写3行代码,而是基于我已经写好的一个Spring Boot Oauth2服务.仅仅需要修改3行数据库配置信息,即可得到一个Spring Boot Oauth2服务. 项 ...
- 利用CSS3制作淡入淡出动画效果
CSS3新增动画属性“@-webkit-keyframes”,从字面就可以看出其含义——关键帧,这与Flash中的含义一致. 利用CSS3制作动画效果其原理与Flash一样,我们需要定义关键帧处的状态 ...
- Grid布局20行代码快速生成瀑布流
网格布局 Grid 布局,好用又简单,至少比 Flex 要人性化一点,美中不足就是浏览器支持度差点. DOM结构 中间夹层为了后续拓展. CSS .grid { display: grid; grid ...
- js 3行代码,最简易实现div效果悬浮
简易实现浮动效果的首要因素是:获取滚动条距离浏览器顶部的距离,下面直接贴代码: <!DOCTYPE html> <html> <head> <meta cha ...
- css制作简单loading动画效果【css3 loading加载动画】
曾经以为,loading的制作需要一些比较高深的web动画技术,后来发现大多数loading都可以用“障眼法”做出来.比如一个旋转的圆圈,并不都是将gif图放进去,有些就是画个静止图像,然后让它旋转就 ...
- jQuery
代码的层定位滑动动画效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 1行代码为每个Controller自定义“TabBar”-b
这篇文章大致会带你实现以下的功能,废话少说,先看东西: JPNavigationController.gif Q&A:Demo里都有那些东西? 01.关于自定义导航栏 01.第一个控制器的导航 ...
随机推荐
- iOS - 开源框架、项目和学习资料汇总(其他篇)
数据库 1. FMDB – sqlite的工具, 多线程FMDatabaseQueue实例,FMDB数据库的使用演示和封装工具类.GXDatabaseUtils – 在FMDB基础上的工具.2. re ...
- VMware激活码,Acrobat激活码
VMware Workstation Pro key/注册码: VY1DU-2VXDH-08DVQ-PXZQZ-P2KV8 VF58R-28D9P-0882Z-5GX7G-NPUTF YG7XR-4G ...
- pandas 数据类型转换
数据处理过程的数据类型 当利用pandas进行数据处理的时候,经常会遇到数据类型的问题,当拿到数据的时候,首先需要确定拿到的是正确类型的数据,一般通过数据类型的转化,这篇文章就介绍pandas里面的数 ...
- VS2015:出现devenv.sln解决方案保存对话框
问题描述: 打开VS2015项目时,提示保存“devenv.sln” 解决方法: 找到文件:C:\Program Files (x86)\Common Files\microsoft shared\M ...
- ELK之生产日志收集构架(filebeat-logstash-redis-logstash-elasticsearch-kibana)
本次构架图如下 说明: 1,前端服务器只启动轻量级日志收集工具filebeat(不需要JDK环境) 2,收集的日志不进过处理直接发送到redis消息队列 3,redis消息队列只是暂时存储日志数据,不 ...
- IE new Date NaN 问题
var ctime = "2015/1/7 10:35"; ctime = ctime.replace(/-/g,"/"); //为了兼容IE var date ...
- org.springframework.dao.InvalidDataAccessApiUsageException
org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read ...
- 2018-2019-2 20165330《网络对抗技术》Exp2 后门原理与实践
目录 基础问题 相关知识 实验内容 实验步骤 实验过程中遇到的问题 实验总结与体会 实验内容 使用netcat获取主机操作Shell,cron启动 使用socat获取主机操作Shell, 任务计划启动 ...
- ls 列出文件目录(可以含子目录)及文件的完整路径
1.列出当前目录的文件.文件夹完整路径 ls -1 |awk '{print i$0}' i=`pwd`'/' 2.列出当前目录及子目录的文件.文件夹完整路径 ls -R |awk '{p ...
- Frame报文
链路层帧常用的帧格式有两种:Ethernet II 与 IEEE802.3 Ethernet II 格式多用于终端设备的通信 IEEE802.3 格式多用于网络设备的通信 如何区分这两种报文 ...