效果如下:

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

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. Django Forms实例

    # Django的Form主要具有一下几大功能: # # 生成HTML标签 # 验证用户数据(显示错误信息) # HTML Form提交保留上次提交数据 # 初始化页面显示内容 # forms组件生成 ...

  2. keystone令牌三种生成方式

    keystone认证方式:UUID.PKI.Fernet; 知识点复习: 通俗的讲,token 是用户的一种凭证,需拿正确的用户名/密码向 Keystone 申请才能得到.如果用户每次都采用用户名/密 ...

  3. IAM页面是在统一区分配的还是在混合区分配的?

    IAM页面是在统一区分配的还是在混合区分配的? IAM页面的作用这里就不说了,网上的资料很多 文章中用到的工具:查看SQLSERVER内部数据页面的小插件Internals Viewer 先建立四张表 ...

  4. Oracle EBS OPM convert dtl reservation

    --convert_dtl_reservation --created by jenrry DECLARE l_reservation_rec mtl_reservations%ROWTYPE; l_ ...

  5. asp.net获取当前网址url

    asp.net获取当前网址url   设当前页完整地址是:http://www.jb51.net/aaa/bbb.aspx?id=5&name=kelli "http://" ...

  6. Huawei 常用基本配置命令一

    华为交换机的三种视图: 用户视图, 系统视图, 接口视图 用户视图: 刚开始登入交换机时的视图,一般看到的是尖括号<> . save // 配置完交换机后保存当前配置的命令 system- ...

  7. 小程序push数组,渲染不出来解决办法

    1.在data中,定义一个空数组: zhou_time:[] 2.声明: var zhou_time = this.data.zhou_time; 3.PUSH赋值: zhou_time.push({ ...

  8. Dig命令解析结果

    dig -t RT NAME @NS -t RT 指定要查询的资源记录类型 NAME 需要解析的域(域名) @NS 指定那个域名服务器负责解析 [root@xss ~]# dig www.ihoney ...

  9. Python2.7-datetime

    datetime 模块用于操作日期时间模块内定义了5个类:date,time,datetime,timedelta,tzinfo 1.timedelta对象,代表一个时间间隔datetime.time ...

  10. 原生js switch语句

    一.我们在流判断的时候,我们大多数的情况我使用if  else 语句.但是对于一些大量的逻辑的判断的时候,我们不建议使用if elseif语句 这种语句的效率执行不高,因为他每个expression ...