【Qt】QLabel之动态阴影边框
效果如下:

实现思路参考了下面的文章:
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之动态阴影边框的更多相关文章
- Qt之阴影边框(转)
原文地址:http://blog.sina.com.cn/s/blog_a6fb6cc90101eoc7.html 阴影边框很常见,诸如360以及其他很多软件都有类似效果,了解CSS3的同学们应该都知 ...
- Qt 创建圆角、无边框、有阴影、可拖动的窗口 good
程序窗口的边框,标题栏等是系统管理的,Qt 不能对其进行定制,为了实现定制的边框.标题栏.关闭按钮等,需要把系统默认的边框.标题栏去掉,然后使用 Widget 来模拟它们.这里介绍使用 QSS + Q ...
- QT模态对话框用法(在UI文件中设置Widget背景图,这个图是一个带阴影边框的图片——酷)
QT弹出模态对话框做法: 1.新建UI文件时,一定要选择基类是QDialog的,我的选择是:Dialog without Buttons(),如下图: 2.然后在使用的时候: MyDialog dlg ...
- Qt之圆角阴影边框
Qt的主窗体要做出类似WIN7那种圆角阴影边框,这一直是美工的需求. 这里是有一些门道的,尤其是,这里藏着一个很大的秘密. 这个秘密是一个QT的至少横跨3个版本,存在了2年多的BUG... https ...
- Qt:无标题栏无边框程序的拖动和改变大小
From: http://blog.csdn.net/kfbyj/article/details/9284923 最近做项目遇到的问题,总结下. 有时候我们觉得系统的标题栏和按钮太丑太呆板,想做自己的 ...
- QT笔记之实现阴影窗口
方法一: 代码实现 在窗口构造函数中加入:setAttribute(Qt::WA_TranslucentBackground),保证不被绘制上的部分透明 重写void paintEvent(QPain ...
- QT自绘标题和边框
在QT中如果想要自绘标题和边框,一般步骤是: 1) 在创建窗口前设置Qt::FramelessWindowHint标志,设置该标志后会创建一个无标题.无边框的窗口. 2)在客户区域的顶部创建一个自绘标 ...
- 游戏里的动态阴影-ShadowMap实现原理
ShadowMap是比较流行的实时阴影实现方案,原理比较简单,但真正实现起来还是会遇到很多问题的,我这里主要记录下实现方式 先看效果 凹凸地形上也有阴影 实现原理 ShadowMap技术是从灯光空间用 ...
- IOS UIView圆角,阴影,边框,渐增光泽
圆角 sampleView.layer.cornerRadius = 2.5; // 圓角的弧度sampleView.layer.masksToBounds = YES; 阴影 sampleView. ...
随机推荐
- Debian 常用命令
换源 用中科大的比较快 deb http://mirrors.ustc.edu.cn/debian jessie main contrib non-free deb-src http://mirror ...
- Oracle EBS OPM convert dtl reservation
--convert_dtl_reservation --created by jenrry DECLARE l_reservation_rec mtl_reservations%ROWTYPE; l_ ...
- 解决mysql日志显示时间和“Got an error reading communication packets” 问题
[root@calldb3 data]# tail -f mysql.error :.884160Z to db: 'calldb' user: 'call' host: '172.31.50.220 ...
- "System.OutOfMemoryException" exception when you execute a query in SQL Server Management Studio (转自MSDN)
Symptoms When you use Microsoft SQL Server Management Studio (SSMS) to run an SQL query that returns ...
- percona pt toolkit 总结
##=====================================================##pt-osc之工作流程:1.检查更改表是否有主键或唯一索引,是否有触发器2.检查修改表 ...
- 基于esky实现python应用的自动升级
一.esky介绍 Esky is an auto-update framework for frozen Python applications. It provides a simple API t ...
- Windows用命令打开常用的设置页面和常用快捷键
Win+R输入以下内容来快捷打开常用设置 compmgmt.msc # 计算机管理 diskmgmt.msc # 磁盘管理 devmgmt.msc # 设备管理 services.msc # 服务管理 ...
- [LOJ 6031]「雅礼集训 2017 Day1」字符串
[LOJ 6031] 「雅礼集训 2017 Day1」字符串 题意 给定一个长度为 \(n\) 的字符串 \(s\), \(m\) 对 \((l_i,r_i)\), 回答 \(q\) 个询问. 每个询 ...
- CentOS7+Nginx设置Systemctl restart nginx.service服务
centos 7上是用Systemd进行系统初始化的,Systemd 是 Linux 系统中最新的初始化系统(init),它主要的设计目标是克服 sysvinit 固有的缺点,提高系统的启动速度.关于 ...
- BZOJ3998:[TJOI2015]弦论(SAM)
Description 对于一个给定长度为N的字符串,求它的第K小子串是什么. Input 第一行是一个仅由小写英文字母构成的字符串S 第二行为两个整数T和K,T为0则表示不同位置的相同子串算作一个. ...