效果图如下

实现原理
利用Qt的绘制函数,先绘制歌词文案,然后绘制歌词遮罩,歌词遮罩通过定时器计算时长,从而改变遮罩长度,达到效果。

核心代码

//设置歌词内容和启动定时器
void Lrc::startLrcMask(qint64 intervalTime, const QString& text)
{//更换文本内容setText(text);// 这里设置每隔30毫秒更新一次遮罩的宽度qreal count = intervalTime / 30;// 获取遮罩每次需要增加的宽度,这里的m_lrcWidth是部件的固定宽度m_lrcMaskWidthInterval = m_lrcWidth / count;m_lrcMaskWidth = 0;if (m_timer) {m_timer->start(30);}
}//定时器模块
void Lrc::sltTimerOut()
{m_lrcMaskWidth += m_lrcMaskWidthInterval;update();
}//绘制
void Lrc::paintEvent(QPaintEvent * event)
{QPainter painter(this);painter.setFont(m_font);// 先绘制渐变文字painter.setPen(QPen(m_textLinearGradient, 0));painter.drawText(0, 0, m_lrcWidth, 60, Qt::AlignLeft, text());// 最后绘制歌词遮罩painter.setPen(QPen(m_maskLinearGradient, 0));painter.drawText(0, 0, m_lrcMaskWidth, 60, Qt::AlignLeft, text());
}

源码传送门

Qt实现歌词播放流光跑马灯特效相关推荐

  1. jquery 立体走马灯_jQuery简单的文字跑马灯特效

    插件描述:这是一款非常简单的jQuery文字跑马灯特效插件.该跑马灯特效使文本从右向左不停循环,当鼠标放到跑马灯上的文字时,跑马灯会暂停运动. 更新时间:2018/2/8 下午3:21:52 更新说明 ...

  2. js在html中加文字走马灯特效,jQuery简单的文字跑马灯特效

    插件描述:这是一款非常简单的jQuery文字跑马灯特效插件.该跑马灯特效使文本从右向左不停循环,当鼠标放到跑马灯上的文字时,跑马灯会暂停运动. 更新时间:2018/2/8 下午3:21:52 更新说明 ...

  3. 原生JS实现图片跑马灯特效

    今天给大家分享一个用原生JS实现的图片跑马灯特效,效果如下: 实现的代码如下,欢迎大家复制粘贴. <!DOCTYPE html> <html><head><m ...

  4. 网站顶部的跑马灯特效代码

    跑马灯的方法很多,其中最简单的是采用一句Html代码来实现 放置说明 放在头部head里即可 代码 <style> #top-grrk{ background:url(https://ex ...

  5. STM8S自学笔记-003 GPIO输出:点亮LED灯 and 跑马灯特效

    STM8S自学笔记-003 GPIO输出:点亮LED灯 and 跑马灯特效 点亮LED GPIO初始化函数:GPIO_Init() GPIO电平操作库函数:GPIO_WriteHigh().GPIO_ ...

  6. 7.纯 CSS 创作一个 3D 文字跑马灯特效

    7.纯 CSS 创作一个 3D 文字跑马灯特效 原文地址:https://segmentfault.com/a/1190000014663038 感想:简单的从右到左动画 HTML代码: <di ...

  7. 只需一个DOM,纯CSS实现线性跑马灯特效

    只需一个DOM,纯CSS实现跑马灯线性特效 引言 跑马灯效果图&Demo 跑马灯代码 样式分析解释 引言 之前看到一个效果,一条小细线,围绕着边框一直绕圈,不过它的实现方式使用了JavaScr ...

  8. CSS实现公告栏文字跑马灯特效(VUE组件)

    效果图 VUE组件封装 <template><div class="marquee" :style="{ backgroundColor: bgColo ...

  9. php实现跑马灯闪亮,易达CMS实现跑马灯特效!

    [br]1 各种跑马灯代码: [br]2 实现跑马灯的方法很多,其中最简单的是采用一句Html代码来实现,我们在需要出现跑马灯效果的地方插入"<marquee>滚动的文字< ...

最新文章

  1. 使用Keil语言的嵌入式C编程教程(上)
  2. 基于Java的RDMA高性能通信库(四):DaRPC
  3. android进程间对象传递,Android Fragment 间对象传递
  4. python文本解析_如何通过python进行文本解析?
  5. Linux declare命令、Linux tail 命令
  6. 文献阅读005【精读】
  7. 最简单的电脑上截长图的方法
  8. VS Code:4个中文乱码问题及解决方法
  9. 【金蝶】金蝶KIS专业版9.1清理用户名密码
  10. 获取某年某月的第一天是星期几
  11. 秒拍视频其实在你浏览器缓存里
  12. 自动遍历测试方法及常见技术
  13. React类组件的两种写法
  14. 审计学习-审计概述02(政府审计和注册会计师审计+职业责任和期望差距+审计报告和信息差距+审计五要素+三方关系人+责任方责任+审计报告预期使用者+鉴证对象+披露+财报编制基础)
  15. Windows下的很多程序都有十分漂亮的菜单
  16. 关于开机出现“安装程序正在为首次使用计算机做准备”的解决方案及微软OOBE与SYSPREP的实用技巧
  17. 让爱永不过期,三公仔给你“旧药换新”
  18. 微信开发从入门到精通教程大全 资料大全 java和php版本;教程文档、代码、视频 微信商城实例
  19. 蓝桥杯 锻造兵器 JAVA TreeMap的使用
  20. [Skr-Shop]通用抽奖工具之需求分析

热门文章

  1. linux7查看计划任务,CentOS7 计划任务
  2. 校园视频AI分析预警系统 TesnorFlow
  3. Buy Tickets
  4. Window11快捷命令行【超实用】
  5. 基于jsp(java)工资管理系统的设计和开发(含源文件)
  6. 计算机网络安全——密码学
  7. 红外摄像机的原理、分类及特点
  8. git将本地文件推送到远程仓库
  9. .NET中,在方法参数的类型前加一个OUT是做什么用的
  10. atheros 8328交换芯片 在SDK_10.5.13上面的移植