Qt之窗口动画(下坠、抖动、透明度)
来源:互联网 发布:2017年度网络热词 编辑:程序博客网 时间:2024/04/29 05:50
简述
前面几节中我们介绍了关于动画的基本使用,有属性动画、串行动画组、并行动画组。这节我们来实现一些特效,让交互更顺畅。
- 简述
- 示例
- 效果
- 源码
- 更多参考
示例
下面,我们以geometry、pos、windowOpacity属性为例,来实现窗体的下坠、抖动、透明度效果。
效果
源码
下坠效果:
通过计算桌面的宽度、高度,来设置动画的起始值和结束值。
void MainWindow::onDropWindow(){ QPropertyAnimation *pAnimation = new QPropertyAnimation(this, "geometry"); QDesktopWidget *pDesktopWidget = QApplication::desktop(); int x = (pDesktopWidget->availableGeometry().width() - width()) / 2; int y = (pDesktopWidget->availableGeometry().height() - height()) / 2; pAnimation->setDuration(1000); pAnimation->setStartValue(QRect(x, 0, width(), height())); pAnimation->setEndValue(QRect(x, y, width(), height())); pAnimation->setEasingCurve(QEasingCurve::OutElastic); pAnimation->start(QAbstractAnimation::DeleteWhenStopped);}
抖动效果:
获取界面的坐标,然后进行上、下、左、右坐标浮动,通过setKeyValueAt()来设置每一时刻的位置,实现抖动效果。
void MainWindow::onShakeWindow(){ QPropertyAnimation *pAnimation = new QPropertyAnimation(this, "pos"); pAnimation->setDuration(500); pAnimation->setLoopCount(2); pAnimation->setKeyValueAt(0, QPoint(geometry().x() - 3, geometry().y() - 3)); pAnimation->setKeyValueAt(0.1, QPoint(geometry().x() + 6, geometry().y() + 6)); pAnimation->setKeyValueAt(0.2, QPoint(geometry().x() - 6, geometry().y() + 6)); pAnimation->setKeyValueAt(0.3, QPoint(geometry().x() + 6, geometry().y() - 6)); pAnimation->setKeyValueAt(0.4, QPoint(geometry().x() - 6, geometry().y() - 6)); pAnimation->setKeyValueAt(0.5, QPoint(geometry().x() + 6, geometry().y() + 6)); pAnimation->setKeyValueAt(0.6, QPoint(geometry().x() - 6, geometry().y() + 6)); pAnimation->setKeyValueAt(0.7, QPoint(geometry().x() + 6, geometry().y() - 6)); pAnimation->setKeyValueAt(0.8, QPoint(geometry().x() - 6, geometry().y() - 6)); pAnimation->setKeyValueAt(0.9, QPoint(geometry().x() + 6, geometry().y() + 6)); pAnimation->setKeyValueAt(1, QPoint(geometry().x() - 3, geometry().y() - 3)); pAnimation->start(QAbstractAnimation::DeleteWhenStopped);}
透明度效果:
设置每一时刻的透明度值,动画结束时界面还原(透明度再为1)。
void MainWindow::onOpacityWindow(){ QPropertyAnimation *pAnimation = new QPropertyAnimation(this, "windowOpacity"); pAnimation->setDuration(1000); pAnimation->setKeyValueAt(0, 1); pAnimation->setKeyValueAt(0.5, 0); pAnimation->setKeyValueAt(1, 1); pAnimation->start(QAbstractAnimation::DeleteWhenStopped);}
是不是很有趣,还不快点儿,实现属于自己的动画。
更多参考
- Qt之动画框架
- Qt之QPropertyAnimation
- Qt之QSequentialAnimationGroup
- Qt之QParallelAnimationGroup
- Qt之QPauseAnimation
3 1
- Qt之窗口动画(下坠、抖动、透明度)
- Qt之窗口动画(下坠、抖动、透明度)
- Qt之窗口动画(下坠、抖动、透明度)
- Android窗口抖动之动画实现
- Android窗口抖动之动画实现
- Animation抖动窗口(动画)
- QT 设置窗口透明度
- Animation动画之AlphaAnimation(透明度变化)
- Qt设置无边框窗口,窗口透明度
- Qt 之窗口移动的动画效果
- 【QT】窗口绘制之几何图形和动画
- Qt中改变子窗口透明度
- Qt给窗口或者控件设置透明度
- QT 动画透明度不起作用 QPropertyAnimation windowOpacity
- 《js动画效果》之透明度动画
- Tween 动画之AlphaAniamtion(透明度动画
- 《js动画效果》之透明度动画
- 动画之补间透明度动画
- 从零开始,跟我一起做jblog项目(三)从Maven到Gradle
- **JAVASCRIPT** 网页交互事件
- 酷炫的嵌套作用域
- R Programming: Part 1 - Nuts and Bolts
- aaaaaaaaaaa
- Qt之窗口动画(下坠、抖动、透明度)
- Windows Server 2008 R2 多用户实现远程连接登录 远程桌面服务配置和授权激活
- SVN Server Ubuntu环境配置
- Scroller的方法startScroll、fling、computeScrollOffset
- jQuery --- 实现图片轮播
- 1.2 Java的竞争对手及各自优势
- jQuery --- 实现选项卡操作
- centos 下 redis 下载与安装
- TestNG入门笔记[1] : 在Eclipse上安装TestNG