博客出处:http://www.devdiv.com/thread-39111-1-1.html

折腾了几天,终于实现了图片的淡出淡入的效果。 其实也应该是说实现了图片的淡入效果,因为淡出效果我暂时还用不到,但原理还是一样的。

网上关于图片的淡出淡入效果的讨论蛮多的,但是用QT实现就很少了。实现这种效果有两种途径:一是读取图片的RGB值,然后渐进达到淡出淡入的效果,这种方法我没有尝试,感觉还是比较复杂。二是设置加载图片载体的透明度,从完全透明到完全显示,控制这个过程可以用过定时器(QTimer)来实现。

我是用QLabel加载图片的,主要运用到QTimer和QGraphicOpacityEffect这两个控制类。下面我说一下实现这种效果的步骤:

<1>   把label的属性背景透明度设置为透明,注意这并不能使你的图片变为透明,因为这只是使得label的边框,背景色彩消失而已。

  1. ui->label->setAttribute(Qt::WA_TranslucentBackground, true);

复制代码

<2>   加载图片,这个就不多说了,我是加载了一张gif图片,是静态的gif图片- -。

  1. ui->label->setPixmap(QPixmap("path"));

复制代码

<3>   把加载了图片的label设置完全透明

  1. float opacity=0.0;
  2. QGraphicOpacityEffect *effect=new QGraphicOpacityEffect()'
  3. effect->setIOpacity(opacity);//透明范围为0.0-1.0,默认为0.7  ui->label->setGraphicEffect(effect);

复制代码

<4> 利用QTimer实现渐变过程

  1. QTimer timer;
  2. QObject::connect(&timer,SIGNAL(timeout()),this,SLOT(fade_on_fade_out()));
  3. timer.start(250);//每隔250毫秒发射一次timeout()

复制代码

<5>在槽函数fade_on_fade_out()实现渐变功能

  1. void fade_on_fade_in()
  2. {        if(opacity>=1.0)
  3. }
  4. {
  5. timer.stop();//定时器停止
  6. }
  7. else
  8. {
  9. effect->setOpacity(opacity);
  10. ui->label->setGraphicsEffect(effect);
  11. }
  12. opacity+=0.1;//透明度累加

复制代码

<6>完成。

最新文章

  1. 【OpenCV】选择ROI区域
  2. 简单的3个SQL视图搞定所有SqlServer数据库字典
  3. Android绘图之渐隐动画
  4. Linux/Unix shell 自动发送AWR report
  5. flash链接需要后台调用时的插入flash方法
  6. 阿里云ECS被攻击
  7. SQL Server 加密层级
  8. 快速排序OC、Swift版源码
  9. java设计模式--基础思想总结--父类引用操作对象
  10. Thinkpad T450 Linux Mint(Ubuntu) 安装Nvidia显卡驱动
  11. python-networkx学习(1)
  12. 【Python】 http客户端库requests &amp; urllib2 以及ip地址处理IPy
  13. ASP.NET Core 2.1 : 十四.静态文件与访问授权、防盗链
  14. selinux基本
  15. Cocos Creator JS 获取当前日期与时间
  16. POJ3094 Quicksum
  17. 基于jQuery图片弹出翻转特效代码
  18. Office Online Server 2016 部署和配置
  19. 深入理解JVM一java堆分析
  20. CSS样式属性分类

热门文章

  1. Mac 如果一定要写个锁屏程序的话就这样
  2. java四种数组排序
  3. 关于Tomcat 6的热部署和热加载
  4. jvm调优具体参数配置
  5. 在屏幕上显示C盘根目录下的所有文件和文件夹
  6. 10位顶级PHP大师的开发原则
  7. 构建linux内核源码树
  8. getpeername
  9. [HDOJ2473]Junk-Mail Filter(并查集,删除操作,马甲)
  10. [58 Argo]让argo跑起来