效果如下:

实现思路参考了下面的文章:

Qt 之 QPropertyAnimation

该文章是自定义属性alpha,原理类似,代码如下:

//在头文件加入
Q_PROPERTY(int iBorderRadius READ iBorderRadius WRITE setBorderRadius) //自定义属性修改QLable的边框,以达到动画效果
private:
int iBorderRadius() const;
void setBorderRadius(const int radius); void initLableAnimation();
//cpp
int MainWindow::iBorderRadius() const
{
return m_borderRadius;
} void MainWindow::setBorderRadius(const int radius)
{
m_borderRadius = radius; //下面在自定义属性中修改BlurRadius
m_lblSnapImgshadowEffect->setBlurRadius(m_borderRadius); m_lblIdentityImgshadowEffect->setBlurRadius(m_borderRadius); // ui->lblIdentityImg->setGraphicsEffect(m_lblSnapImgshadowEffect);
} void MainWindow::initLableAnimation()
{
//设备图片周围的阴影
m_lblIdentityImgshadowEffect =new QGraphicsDropShadowEffect(this);
m_lblIdentityImgshadowEffect->setColor(Qt::darkGreen);//边框颜色
m_lblIdentityImgshadowEffect->setOffset(,);
m_lblIdentityImgshadowEffect->setBlurRadius(); //此处初始化为0,下面会由QPropertyAnimation 修改 自定义属性iBorderRadius m_lblSnapImgshadowEffect = new QGraphicsDropShadowEffect(this);
m_lblSnapImgshadowEffect->setColor(Qt::red); //边框颜色
m_lblSnapImgshadowEffect->setOffset(,);
m_lblSnapImgshadowEffect->setBlurRadius(); //此处初始化为0,下面会由QPropertyAnimation 修改 自定义属性iBorderRadius ui->lblIdentityImg->setGraphicsEffect(m_lblIdentityImgshadowEffect);
ui->lblSnapImg->setGraphicsEffect(m_lblSnapImgshadowEffect); //抓拍图片的边框动画特效
m_lblSnapImgAnimation = new QPropertyAnimation();
m_lblSnapImgAnimation->setTargetObject(this);
m_lblSnapImgAnimation->setDuration(); //完整周期2秒
m_lblSnapImgAnimation->setPropertyName("iBorderRadius");
//下面代码是由状态机自动完成
//0-0.5,完成iBorderRadius从1到30递增;
//0.5-1,完成iBorderRadius从30到1递减
m_lblSnapImgAnimation->setKeyValueAt(,);
m_lblSnapImgAnimation->setKeyValueAt(0.5,);
m_lblSnapImgAnimation->setKeyValueAt(,); m_lblSnapImgAnimation->setLoopCount(-); //身份证照片的边框动画特效
m_lblIdentityImgAnimation = new QPropertyAnimation();
m_lblIdentityImgAnimation->setTargetObject(this);
m_lblIdentityImgAnimation->setDuration();//完整周期2秒
m_lblIdentityImgAnimation->setPropertyName("iBorderRadius");
//下面代码是由状态机自动完成
//0-0.5,完成iBorderRadius从1到30递增;
//0.5-1,完成iBorderRadius从30到1递减
m_lblIdentityImgAnimation->setKeyValueAt(,);
m_lblIdentityImgAnimation->setKeyValueAt(0.5,);
m_lblIdentityImgAnimation->setKeyValueAt(,); m_lblIdentityImgAnimation->setLoopCount(-); connect(this, SIGNAL(StartLableAnimation()), m_lblSnapImgAnimation, SLOT(start())); connect(this, SIGNAL(StartLableAnimation()), m_lblIdentityImgAnimation, SLOT(start()));
}

只要触发信号,两个QLabel的动画效果就会启动。

emit StartLableAnimation();

代码:

链接: https://pan.baidu.com/s/1X5o4C283lA2tjcGmqS9Mgg 密码: ned3

【Qt】QLabel之动态阴影边框的更多相关文章

  1. Qt之阴影边框(转)

    原文地址:http://blog.sina.com.cn/s/blog_a6fb6cc90101eoc7.html 阴影边框很常见,诸如360以及其他很多软件都有类似效果,了解CSS3的同学们应该都知 ...

  2. Qt 创建圆角、无边框、有阴影、可拖动的窗口 good

    程序窗口的边框,标题栏等是系统管理的,Qt 不能对其进行定制,为了实现定制的边框.标题栏.关闭按钮等,需要把系统默认的边框.标题栏去掉,然后使用 Widget 来模拟它们.这里介绍使用 QSS + Q ...

  3. QT模态对话框用法(在UI文件中设置Widget背景图,这个图是一个带阴影边框的图片——酷)

    QT弹出模态对话框做法: 1.新建UI文件时,一定要选择基类是QDialog的,我的选择是:Dialog without Buttons(),如下图: 2.然后在使用的时候: MyDialog dlg ...

  4. Qt之圆角阴影边框

    Qt的主窗体要做出类似WIN7那种圆角阴影边框,这一直是美工的需求. 这里是有一些门道的,尤其是,这里藏着一个很大的秘密. 这个秘密是一个QT的至少横跨3个版本,存在了2年多的BUG... https ...

  5. Qt:无标题栏无边框程序的拖动和改变大小

    From: http://blog.csdn.net/kfbyj/article/details/9284923 最近做项目遇到的问题,总结下. 有时候我们觉得系统的标题栏和按钮太丑太呆板,想做自己的 ...

  6. QT笔记之实现阴影窗口

    方法一: 代码实现 在窗口构造函数中加入:setAttribute(Qt::WA_TranslucentBackground),保证不被绘制上的部分透明 重写void paintEvent(QPain ...

  7. QT自绘标题和边框

    在QT中如果想要自绘标题和边框,一般步骤是: 1) 在创建窗口前设置Qt::FramelessWindowHint标志,设置该标志后会创建一个无标题.无边框的窗口. 2)在客户区域的顶部创建一个自绘标 ...

  8. 游戏里的动态阴影-ShadowMap实现原理

    ShadowMap是比较流行的实时阴影实现方案,原理比较简单,但真正实现起来还是会遇到很多问题的,我这里主要记录下实现方式 先看效果 凹凸地形上也有阴影 实现原理 ShadowMap技术是从灯光空间用 ...

  9. IOS UIView圆角,阴影,边框,渐增光泽

    圆角 sampleView.layer.cornerRadius = 2.5; // 圓角的弧度sampleView.layer.masksToBounds = YES; 阴影 sampleView. ...

随机推荐

  1. React Native八大Demo

    参考资料:http://www.cnblogs.com/shaoting/p/7148240.html 下一个项目公司也打算使用react native.大致看了下原型设计,写几个小demo先试试水. ...

  2. 2018-9 Java.lang.StackOverflowError

    问题: Java.lang.StackOverflowError at com.**Logger.**.**.StringFilter.isValueNull(StringFilter.java:81 ...

  3. 可选的binlog解析组件

    本文的mysql-binlog-connector-java:https://github.com/shyiko/mysql-binlog-connector-java 阿里的canal:https: ...

  4. 【爬坑】运行 Hadoop 的 MapReduce 示例卡住了

    1. 问题说明 在以伪分布式模式运行 Hadoop 自带的 MapReduce 示例,卡在了 Running job ,如图所示 2. 解决过程 查看日志没得到有用的信息 再次确认配置信息没有错误信息 ...

  5. DevExpress07、DataNavigator、 ControlNavigator

    https://documentation.devexpress.com/WindowsForms/DevExpress.XtraEditors.DataNavigator.class 1.DataN ...

  6. 使用SuperMap对接天地图

    我们在做项目时,经常需要与天地图对接,对接形式分为2种: 1. 将公网天地图用作项目底图,在JavaScript客户端加载显示: 2. 将自己发布的WMTS地图服务给别人用,同时需要自己的服务能和天地 ...

  7. os.path.md

    os.path 我们可以利用os.path模块提供的函数更容易地在跨平台上处理文件. 即使我们的程序不是用于夸平台, 也应该使用os.path来让路径名字更加可靠. Parsing Paths os. ...

  8. Android (争取做到)最全的底部导航栏实现方法

    本文(争取做到)Android 最全的底部导航栏实现方法. 现在写了4个主要方法. 还有一些个人感觉不完全切题的方法也会简单介绍一下. 方法一. ViewPager + List<View> ...

  9. C#实现之(自动更新)

    做开发的人,尤其是做客户端(C/S)系统开发的人都会遇到一个头疼的问题,就是软件的自动更新:系统发布后怎样自动的更新程序,在下有幸开发过一个自动更新程序,更新程序与任何宿主程序是完全独立的:只要在主程 ...

  10. 【Java123】JavaWeb Servlet开发

    http://www.runoob.com/servlet/servlet-intro.html https://www.cnblogs.com/xdp-gacl/tag/JavaWeb学习总结/de ...