qt 窗口动画

窗口动画

编辑删除转载 2015-10-10 14:50:27

标签:qt渐变动画

一个应用程序通常包含多个动画,例如,你可能希望同时移动许多graphic items或者一个个按照串行的方式的移动他们

QAnimationGroup:动画组父类,以包含其它animations,这样这些animations可以串行或者并行的触发了

QSequentialAnimationGroup:串行动画

QParallelAnimationGroup:并行动画

QPropertyAnimation?:动画类,第二个参数代表窗口树形,可以为size、windowOpacity、gemotry等等

1、淡入淡出

构造函数中写入如下代码:?

 1 ?animation = new QPropertyAnimation(this, "windowOpacity");
 2
 3 animation->setDuration(3000);//动画总时间
 4
 5 animation->setStartValue(1);//开始不透明
 6
 7 animation->setEndValue(0);//接触时透明
 8
 9 animation->setEasingCurve(QEasingCurve::Linear);//渐变时间曲线
10
11 connect(animation, &QPropertyAnimation::finished
12
13 , this, [this]{close(); });?//动画结束关闭窗口

setStartValue方法和setEndValue方法的参数依据类构造函数中的?propertyName参数,即第二个参数

?常用方法:

start:启动动画

pause:暂停动画

stop:停止动画

?setKeyValueAt(qreal, const QVariant &),插入关键数据,到了参数1指定的位置,会出现参数2的状态

?setCurrentTime(int):设置当前动画时间

?setDirection(Direction):动画方向,Forward、Backward

stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)?:状态改变信号

2、最小化时逐渐缩小?

?注意:应该在窗口外部使用,而不是构造函数中

 1 QPropertyAnimation *minimumAnimation =
 2
 3 new QPropertyAnimation(videoWidget, "geometry");
 4
 5 minimumAnimation->setDuration(200);
 6
 7 minimumAnimation->setEndValue(
 8
 9 QRect(mapToGlobal(pos()).x() + videoCount * videoWidget->width()
10
11  , mapToGlobal(pos()).y(), 0, 0)
12
13 );
14
15 minimumAnimation->start();

时间: 2024-11-25 08:36:15

qt 窗口动画的相关文章

Qt之窗口动画(下坠、抖动、透明度)

简述 前面几节中我们介绍了关于动画的基本使用,有属性动画.串行动画组.并行动画组.这节我们来实现一些特效,让交互更顺畅. 简述 示例 效果 源码 更多参考 示例 下面,我们以geometry.pos.windowOpacity属性为例,来实现窗体的下坠.抖动.透明度效果. 效果 源码 下坠效果: 通过计算桌面的宽度.高度,来设置动画的起始值和结束值. void MainWindow::onDropWindow() { QPropertyAnimation *pAnimation = new QP

Qt窗口及控件-窗口Close()自动释放

在进行一个四窗口项目,当第四个窗口显示结果后,若重新开始则close()结果页面后new第一个窗口 发现不断的重新开始会导致内存占用越来越多 Qt窗口在Close()指令后调用CloseEven(),最后判断是否关闭 若关闭,则Hide()窗口,并不是真正的释放内存.若不关闭则不作任何操作 此时给窗口增加如下设置: setAttribute(Qt::WA_DeleteOnClose); 可实现窗口在Close()后自动释放内存

自定义QT窗口部件外观之QStyle

自定义QT窗口部件外观 重新定义Qt内置窗口部件的外观常用的方法有两种:一是通过子类化QStyle 类或者预定义的一个样式,例如QWindowStyle,来定制应用程序的观感:二是使用Qt样式表. QStyle 类的使用 1.      准备必要的背景图片.在你想添加自定义风格的工程目录下新建一个文件夹“images”,将背景图片等放入文件夹“images”. 2.      点击Qt Creator的“文件”->“新建文件或工程”->模板选择“Qt”,再选择Qt资源文件->点击“选择”

详解Qt的动画框架(一)

Qt的动画框架是在4.6版本引入的.通过Qt动画属性,Qt动画框架为部件和其他QObject对象的动画操作提供了非常大的自由性.Qt动画框架也能用于图形视图框架中.以下是Qt中的有关动画框架类的类视图: Qt的动画框架的Base是由QAbstactionAnimation以及它的两个子类QVariantAnimation和QAnimationGroup组成.QAbstractAnimation类是所有动画类的祖先.它包含了一些在框架中被普遍使用的基本功能:尤其是启动.停止和暂停动画功能.它也接收

深度探索QT窗口系统(五篇)

窗口作为界面编程中最重要的部分,没有窗口就没有界面,是窗口让我们摆脱了DOS时代,按钮是一个窗口,文本框是一个窗口,标签页是一个窗口,...一个窗口可以由多个窗口组成,每天我们都在与窗口打交道,当你打开windows时,桌面就是一个窗口,你打开浏览器时,你也正在访问窗口...好了,回到今天的话题,QT窗口系统,QT是一个跨平台的框架,类似微软的MFC,Borland的OWL,前者只适用于windows,而使用QT你可以开发windows平台应用程序,你也可以开发linux应用程序,当然了你也可以

Ubuntu启用3D桌面和更多的窗口动画

Ubuntu(确切的说是Ubuntu天朝定制版简称优麒麟)才是我最早接触的一个Linux发行,比较搞笑的是,那个时候我还坐在网吧玩星际2. 刚开始玩的时候,尤其喜欢优麒麟那个窗口动画以及在切换的时候那些特效和3D桌面还有像苹果机上的Docky,切来换去的骚包得很.当然,现在也还是喜欢Docky. 要启用3D桌面,过程是很简单的. 注: 无论是3D桌面还是窗口扭曲的动画特效,kde桌面环境都已提供.而在unity桌面环境还需要手动配置才行.为了更好的折腾这些,切换到闭源显卡驱动(闭源驱动可以在设置

CentOS下Qt窗口透明效果失效,成黑色背景的问题

一.问题 Linux系统下Qt窗口的透明效果成了黑色,但同样的代码在windows机子上有透明效果,主要是修改系统的配置,仅在centos6.3及其以上版本实验过.其他系统可以相应配置. 二.问题运行图 (1)Qt透明效果,centos下运行都会出现如下图1所示. 三.解决方法 (1)窗口透明,窗口上的控件不透明,其代码设置 [html] view plain copy setAutoFillBackground(false);  //这个不设置的话就背景变黑 setWindowFlags(Qt

Qt窗口定制

qt中的QWidget窗口支持窗体绘制,但是不支持窗口标题栏绘制,想要美观的界面,还需要自己去定制,下面我就介绍一种定制窗体的方法 一个窗口无非就3部分,标题栏.窗体和状态栏,接下来我定制的窗口没有状态栏,如果自己想加状态栏的话,照着这个模式自己也可以添加,说白了,窗口定制就是把完整的窗口分3部分定制,而每个部分又都是一个qt窗口 定制窗口效果图如下,根据个人喜好,自己也可以定制不同的效果 图1 定制窗口 如图1所示,这个窗口包含两部分,标题栏和窗体,这两部分其实分别是一个没有标题栏的QWidg

QT窗口置顶/真透明/背景模糊/非矩形/跳过任务栏分页器/无边框/无焦点点击/焦点穿透

qt 窗口置顶/真透明/背景模糊/非矩形/跳过任务栏分页器/无边框/无焦点点击/焦点穿透 窗口置顶qt 里是 setWindowFlags(Qt::WindowStaysOnTopHint)kde 里是 KWindowSystem::setState(winId(), NET::KeepAbove)这样的置顶窗口不会处于全屏窗口的上方,如果需要真正的置顶,setWindowFlags(Qt::X11BypassWindowManagerHint) 可无视这个规则,但这样不会出现任务栏等,kimt