QT 实现在ui控件QLabel中实现滚动字幕

基于pyqt5的Qlabel字幕滚动的简单实现方式 实现字幕滚动的好处有以下几点:1.:滚动字幕的字体通常较大,且会滚动,使得用户更轻松地阅读字幕内容,减少了眼睛的疲劳感。2.:对于一些国外电影或电视剧,滚动字幕可以帮助观众更好地理解对话内容。3.:滚动字幕的时间点设置非常灵活,既可以“卡位”,又可以多频次重复滚动,很容易被人们接收到。4.:滚动字幕系统在频道重点剧目和大型活动的宣传推广上可以发挥其特有优势。利用滚动字幕系统进行短信互动直播,其真实、即时的特点使得互动的有效性非常强。 阅读详情

题记:

前一段时间作为小白的我,搞了一下QT,在如何实现在ui一个子控件中进行字幕滚动/图片显示卡住了,经过资料及百度查询,终于做出来了。由于之前没人有详细的教程,所以我记录了一下,把这个分享这里,希望对大家帮助。

QPainter 在ui子控件中实现滚动文字显示

在使用QT中的QPainter实现滚动图片时,发现其职能在当前类中实现而不能对其指定对象。因此,本文介绍如何实现在UI子控件中实现QPainter,实现滚动字幕显示。

  第一步:创建带ui的widgets工程。

      

以下是创建完成之后的工程:

  第二步:打开hello.ui拉一个QLabel控件到窗口上面

在这里我去掉了文字,以及改变了空间背景颜色。

第三步:在工程的Header目录下添加头文件

 

创建好后如下图所示,并加上圈内代码到myqlabel.h:

 

第四步:在source目录下添加myqlabel.cpp文件

 

然后添加下面代码:

#include<QPainter>
#include"myqlabel.h"
#include<QDebug>
#include<QtWidgets/qframe.h>
#include<QWidget>
#include<QTimer>
#include<sys/time.h>

mypaint::mypaint(QWidget*parent) :QLabel(parent)
{
    curIndex =0;
    showText ="hello I am here";
    charWidth=fontMetrics().width("a");
    QTimer *timer =new QTimer(this);
   connect(timer,SIGNAL(timeout()),this,SLOT(updateIndex()));

    timer->start(300);
}

void mypaint::paintEvent(QPaintEvent*event)
{
    QPen pen;
    QPainter painter(this);
    pen.setColor(QColor(255,0,255));
    pen.setStyle(Qt::DashDotDotLine);
    QFont font("楷体",20,QFont::Bold);
    painter.setPen(pen);
    painter.setFont(font);
   painter.drawText(0,50,showText.mid(curIndex));
   painter.drawText(width()-charWidth*curIndex,50,showText.left(curIndex));
}

voidmypaint::updateIndex()
{
    update();
    curIndex++;
    if(curIndex*charWidth>width())
        curIndex =0;
}

 

第五步:进行控件类的提升操作,使其脱离ui 窗口类的包含。

1、打开ui文件,如下图

 

 

2、选择鼠标右

2、右键点击后,选中:Promote to …..

3、如下:选择QLabel ,输入我们要提升的类名:mypaint  ,然后点击添加:Add

4、按下图操作

5、至此完成所有操作。

第六步:保存->编译->运行,结果如下:

 

QT像素级滚动字幕实现:从原理到高性能自定义控件开发 在桌面应用开发中,自定义控件与动画效果是提升用户体验的关键技术。其核心原理在于通过重写绘图事件(paintEvent)与定时器(QTimer)协同,实现对界面元素像素级的精确控制。这项技术的价值在于能够突破标准UI组件的限制,为工业HMI、信息发布系统等对性能和平滑度有极致要求的场景提供定制化解决方案。具体到滚动字幕(跑马灯)效果,它解决了固定显示区域内长文本完整展示的难题。本文以QT框架为例,深入剖析如何利用QPainter进行文本绘制、通过双文本技巧实现无缝循环滚动,并分享在性能优化、抗锯齿处理以及兼容 阅读详情

相关推荐

QT像素级滚动字幕实现:从paintEvent到平滑动画的完整指南

在桌面应用开发中,控件绘制与动画实现是GUI编程的核心基础。通过重写paintEvent方法,开发者可以深入底层绘图机制,实现对界面元素的像素级精确控制。这种技术原理不仅提升了动画的平滑度与性能,更在信息展示、数据可视化等场景中具有重要价值。本文以QT框架下的滚动字幕(跑马灯)为例,详细解析如何通过自定义QLabel的绘制过程,替代传统的控件移动方案,实现亚像素精度的平滑滚动效果。文章深入探讨了paintEvent事件处理、QPainter绘图工具的使用,以及无缝循环滚动的数学原理,为开发者提供了从基础概念

weixin_30642869的博客 387

QT- label实现滚动字幕 (跑马灯)效果 -像素级

网上资料比较多,但是csdn没有,而且也缺乏比较清晰的教程,于是打算写下这篇博客,和大家一起学习QT

corefunction的博客 9585

Qt实现文字滚动

在上面的代码中,我们创建了一个MainWindow类继承自QMainWindow,并添加了一个QLabel控件和一个QTimer定时器作为成员变量。在构造函数中,我们设置了QLabel的初始位置和大小,并连接了定时器的timeout()信号到scrollText()槽函数。在属性编辑器中,将QLabel的文本设置为空字符串,以便后续在代码中动态设置滚动的文本。最后,更新QLabel的文本内容为新的滚动后的文本。以上就是实现文字滚动的完整示例代码。在主窗口的构造函数中,我们还设置了初始的滚动文本和滚动速度。

ZujbMl的博客 982

QLabel 实现文字循环滚动效果(附上c++源码)

实现文字循环滚动效果

bigger_belief的博客 2601

12其他控件-10文字滚动-textmovewidget

一、运行效果 二、功能特点 支持三种风格样式 左右来回滚动、从左滚动到右、从右滚动到左。 支持鼠标悬停停止滚动。 可设置前景色背景色。 可设置滚动的文本。 可设置定时器间隔。 可设置临时显示的静态文本。 可设置临时显示的文本的时间。 三、公共接口 public: enum MoveStyle { MoveStyle_LeftAndRight = 0, //左右来回滚动 MoveStyle_LeftToRight = 1, //从左滚动到右 Mo

Qt/C++视频监控/推流/物联网/大屏系统/自定义控件/UI定制/输入法 710

Qt5 实现灵活可控的滚动字幕效果

本文详细介绍了基于QtWidgets实现滚动字幕组件的开发方法。通过QLabel控件和QTimer定时器结合,实现文本从右向左的平滑滚动效果,并支持速度调节、暂停/继续、窗口自适应等功能。文章从需求分析、技术选型、UI设计到核心代码实现(包括定时器控制、滚动逻辑、交互响应等)进行了完整讲解,并提供了常见问题的解决方案和优化建议。该方案采用可视化UI设计,无需自定义组件类,易于维护且兼容Qt5.x/6.x版本,适用于系统通知、设备状态提示等多种场景,具有跨平台、易扩展等特点。

文石_2009的博客 330

Qt实现滚动字幕

        转自http://blog.youkuaiyun.com/u011417605/article/details/51211853滚动字幕,也叫跑马,就是动态显示一行字符。前面实现是使用QTimer控制,直接在槽函数中截取字符串进行显示,只控制字符串在控件的一端显示,超出控件的部分并没有从控件的另一端循环显示出来。于是我重新实现了一种方法,或者说完善了前面的不足吧。使用QTimer控制显示的节奏...

laughitoff1014的博客 3384

Qt实现水平滚动字幕的技巧与实践

在图形用户界面(GUI)中,QLabel经常用来展示静态文本或图像。它是UI设计师非常青睐的组件,因为QLabel易于操作且功能强大。QLabel还可以为用户显示一些不可编辑的信息,例如状态提示、标签说明等。信号(Signal)是Qt中的一个特殊类型,它在某些特定事件发生时被发出。每一个信号都对应有一个名称和签名(即信号包含的参数类型列表)。当信号被触发时,所有与之相连的槽函数将被调用。槽(Slot)是类的成员函数,用于响应信号。

weixin_35414260的博客 405

Qt 5滚动字幕(左/右)+闪烁效果(QLabel控件显示)

一、说明: Qt版本为:Qt 5.9.1 二、简单解述: 1、字幕效果主要是应用QString QString::mid(int pos, int n = -1) const函数截取字符,另外需要一个定时器刷新(QTimer),具体信息可以参考Qt帮助文档,索引mid,过滤QString class。 2、闪烁效果很简单,用hide和show函数即可,使用一个定时器刷新。

WSG的博客--盛年不重来,一日难再晨.及时当勉励,岁月不待人. 8851

基于QT实现文本滚动显示的GUI编程实战

Qt 是一个功能强大的跨平台 C++ 开发框架,广泛用于构建高性能图形用户界面(GUI)应用程序。其核心基于QObject体系与MOC(元对象编译器),支持信号与槽机制,实现对象间的松耦合通信。在 GUI 层面,QWidget作为基本窗口部件,提供了可视组件的容器与事件处理基础。// 管理GUI应用程序控制流// 创建基础窗口// 显示窗口并进入事件循环该示例展示了最简 Qt 应用程序结构:通过启动事件循环,QWidget构建可视化界面。

weixin_29097457的博客 847

基于PyQt5与OpenCV的多功能图片视频比较工具设计与实现

图像相似度比较是计算机视觉与自动化测试中的基础问题,涉及像素级差异、感知哈希、SSIM等多种算法原理。这些技术能够量化视觉差异,辅助质量评估与异常定位,在UI回归测试、视频转码验证等场景中具有重要工程价值。本文围绕基于PyQt5构建的本地化工具,融合OpenCV图像处理能力,实现图片/视频批量比较、差异热力图可视化与报告导出,帮助工程师高效完成重复性视觉核查任务。

weixin_34269583的博客 452

QT---字幕滚动效果,检测鼠标进入和离开控制字幕滚动

鼠标的进入和离开的检测 滚动字幕实现1. 鼠标的进入和离开的检测【方法一】重写构件的enterEvent()、leaveEvent()方法。注意,focusInEvent()和focusOutEvent()这两个函数是判别该控件是否聚焦的,只要在控件在操作上(包括程序操作)有改变,都会促发这两个函数。 如重写label构件方法, .h文件classLabel:publicQLabel { Q

易名 2546

QLabel文字滚动显示

封装QLabel实现文字滚动显示,具体使用与QLabel相似,不同之处有说明。

Qt实现像素级平滑滚动字幕:基于paintEvent的自定义绘制方案

在桌面应用开发中,控件内长文本的展示常面临布局与完整性的矛盾,滚动字幕(跑马灯)是常见的解决方案。其核心原理是通过定时器动态更新文本位置,实现视觉上的连续滚动。传统基于几何变换的方法存在像素级精度不足、性能开销大等问题。通过重写paintEvent进行自定义绘制,开发者可直接控制文本渲染的起始坐标,利用浮点偏移量实现亚像素级平滑移动,并结合QElapsedTimer实现帧率无关的匀速动画。这种技术方案在状态栏信息、实时数据流展示等需要高刷新率与视觉流畅度的应用场景中价值显著。本文以Qt框架为例,深入解析了如

weixin_30315723的博客 289

工作:三菱PLC与伺服之CC-Link IE Field Network通讯应用

CC-LINK-IE

好记性不如烂笔头 2万+

Windowns下Git环境配置-命令行方式

文章目录一、配置Git1.1 下载Git并安装1.2 配置本地Git用户名和邮箱1.3 注册GitHub二、生成本地公钥,放到GitHub上-SSH Key2.1 生成本地公钥命令2.2 查看生成的公钥2.3 在GitHub放上公钥并测试连通性三、创建项目实操四、可能出现的问题4.1.push不成功4.2.提示SSL的问题4.3.域名不能解析的问题4.4.如果github连接不上的问题 一、配置Git 1.1 下载Git并安装 Git官网 默认安装,根据需要修改安装路径 1.2 配置本地Git用户名和邮箱

学习工作笔记 1135

QT定时器机制深度解析:QTimer与timerEvent的选择与性能优化

在GUI编程中,定时器是实现周期性任务的核心组件,其工作原理与事件循环紧密相关。定时器通过操作系统接口注册时间通知,当时间到达时,事件循环会触发相应的回调或信号。理解这一机制对于构建响应流畅的应用程序至关重要,尤其是在处理实时数据更新、动画渲染等场景时。QTimer作为高级定时器类,基于信号与槽机制,提供了清晰的任务分离和跨对象通信能力,适合通用定时任务管理。而timerEvent作为QObject的内置虚函数,采用直接事件派发模型,减少了信号发射的开销,适用于高频轻量级操作,如UI动画帧更新。在多线程编程

weixin_30381317的博客 485

支付宝H5支付唤醒协议全解析:从alipays://到动态orderSuffix的抓取与拼接

本文深入解析支付宝H5支付唤醒协议,从alipays://协议设计到动态orderSuffix参数的抓取与拼接,详细介绍了支付宝H5支付的底层机制。内容包括协议架构剖析、动态令牌生成与捕获、浏览器兼容性解决方案以及安全机制设计,为开发者提供全面的技术指南和实践建议。

weixin_27972919的博客 3498

Qt QLabel 文字滚动 滚动字幕

1.实现效果 做了两种实现方式,蓝色边框是参考网友的代码实现的,红色边框是优化的 2.简述 实现思路1 准备足够显示满宽的字符,每次删除最左边的一个字符,不够显示的时候,在后边追加字符。 实现思路2 画一个宽度是Label宽度+文本宽度的文本框,从x=0开始,每次将文本框的起始位置减1。当一个完整文本宽度被减完之后,重新从x=0开始画。 实现1 #include "CRollLabel.h" #include <QPainter> #include <QDebug> CRollL

我是唐 8757

Vivado2022.2下载安装

链接:https://pan.baidu.com/s/1lyfE2d-VmaWC-_aR8ratCQ提取码:mt09。

weixin_61081689的博客 2万+

支付漏洞防护绕过的一种方式

放完包后就到了提交订单的地方,可以发现,金额确实小了很多,合理的搭配的话还可以更低,再次前进可以发现,金额确实是这么多,后面就不支付了,到此就结束了。也就是说数量可以为负数,但是金额不能为0或者0以下,有什么方法可以绕过这个限制吗,其实并不难,既然可以为负数,只是对金额不能为0或者负数做了限制。我们可以尝试拼接法,利用负数加上正数让他的值变得很低,但是又大于0就可以了,这里利用购物车的结算方法,随机加一些在购物车里。这里为了方便查看数据包,我这边商品的数量选择3,点击立即购买并抓包。

2301_80115097的博客 1529

Qt开发实现字幕滚动效果

这里也可以调用update()代替scrol(),但使用scroll()会更有效率,因为它只是简单地移动屏幕上已经存在的像素并且只对这个窗口部件的新显示区域(此时,只是一个1像素乘以宽度的像素条)产生一个绘制事件。我们也可以在Ticker的构造函数中完成startTimer()的调用,但是只有在窗口部件实际可见的时候,才有必要保存由Qt产生的定时器事件的那些资源。然后,它使用QWidget::scroll()把窗口部件的内容向左滚动一个像素。定时器的ID通常是非零的,所以可以使用0来表示定时器还没有启动。

shiwei0813的博客 804

全球半导体设备氧化钇熔射服务行业规模预测:预计未来六年CAGR为7.8%

本文将对“半导体设备氧化钇熔射服务”行业进行深度分析,探讨市场趋势的演变、核心竞争者的战略布局、供应链结构的内外特点、研发创新的最新进展、法规政策环境的适应性调整以及投资机会与风险评估。这一稳健的增长趋势表明半导体设备氧化钇熔射服务在电子行业中的重要性逐渐增强。由于全球对于高效、高精度和可靠的电子解决方案的需求增加,对能够提供这些功能的半导体设备氧化钇熔射服务的需求日益增长。由于半导体设备氧化钇熔射服务主要为就地服务型,其“配送”主要依赖于专业团队和技术设备的及时调配,强调服务的时效性和高质量。

CC1239777的博客 570
上一篇: TQ2440 基于V4L2编程框架的 LCD实时显示(上)
下一篇: TQ2440 基于V4L2编程框架的 LCD实时显示(下)
Chasing_Chasing
博客等级 码龄10年 233粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值