,,Qt实现字幕滚动效果的示例代码

,,Qt实现字幕滚动效果的示例代码

本文主要介绍Qt如何利用Qt QTimer实现字幕滚动功能,可以实现自由改变文字内容、适配文字大小、调节速度等功能。有兴趣的可以了解一下。

目录

一、项目介绍二。项目的基本配置。UI界面设计四。主程序实现4.1 widget.h头文件4.2 widget.cpp源文件五、效果演示

一、项目介绍

利用QTimer实现字幕滚动功能,可以实现改变文字内容、适配文字大小、自由调节速度等功能。

二、项目基本配置

新建一个Qt case,项目名为“TextScroll”,基类为“QWidget”,不勾选创建UI界面的复选框,完成项目创建。

三、UI界面设计

没有UI界面

四、主程序实现

4.1 widget.h头文件

声明私有变量和事件:

私人:

QTimer*定时器;//时间计时器

QRgb textColor//文本颜色

QString m _ text//文本内容

QString m _ showText//显示

QFont字体;//字体

int m _ ms

int m _ pixelSize

int m _ moveOffset

int m _ moveSize

int blankSuffix//空白后缀,值越大,空白后缀越多。

浮动速度;//滑动速度,数值越大越快。

void paint event(QPaintEvent * event);

void resize event(QResizeEvent * event);

声明函数和槽函数:

公共:

void setDelay(int ms,int pixel size);//设置滚动延迟,多少毫秒滚动多少像素。

void setText(QString text,QRgb textColor,float speed=0.70,int blank suffix=20);//设置字体。调用此功能后,定时器将自动启动滚动字幕。

//void restart();

公共插槽:

void time out();

4.2 widget.cpp源文件

主要功能如下:

调整大小(600,100);//调整窗口大小

timer=new QTimer(这个);//创建一个计时器

connect(timer,SIGNAL(timeout()),this,SLOT(time out());

QString text='人生充满了各种阶段,世界充满了悲欢离合,构成了人生的圆满;谋事在人,成事在天。

不要后悔你所做的。经常可以看到很多人自怜自艾。'

后悔自己做过的错事,被过去压抑,被过去落魄。世界上没有后悔药。

QRgb textColor=qRgb(67,142,219);//字体颜色——蓝色

浮动速度=0.4;

int blank suffix=0;

setText(text,textColor,speed,blank suffix);

TimeOut()槽函数:

//插槽功能

void小部件:timeOut(){

qDebug()m _ moveOffsetm _ moveSize;

m _ moveOffset=m _ pixelSize

if(m_moveOffsetm_moveSize)

{

m _ move offset=0;

}

update();

}

调整窗口大小的ResizeEvent事件:

void小部件:resizeEvent(QResizeEvent *event)

{

font.setPixelSize(event-size()。身高()* 0.75);//字体大小(此处设置为窗口高度的0.75倍)

m _ showText=m _ text

QFontMetrics metrics(字体);

int char _ w=metrics . horizontal advance(');//在//Qt5.11之后,请在之前使用width()

setDelay(30,char _ w * speed);//滚动延迟

int blank line=width()/char _ w 1;

for(int I=0;iblankLine我)

{

m_showText.insert(0,' ');//在开头插入空白行

}

m _ moveSize=metrics . horizontal advance(m _ show text)blank suffix;

m _ move offset=0;

update();

}

覆盖绘画事件绘画事件:

//绘图事件

void小部件:paintEvent(QPaintEvent *event)

{

QPainter画师(这个);

painter.setFont(字体);//设置字体

painter.setPen(QColor(120,120,120));//将画笔颜色设置为——灰色

painter.drawRect(QRect(0,0,width()-1,height()-1));//在主窗口中绘制一个矩形

painter . set pen(q color(text color));//文本颜色

painter . drawtext(QRect(-m _ move offset,0,width()-1 m_moveOffset,height()-1),

Qt:align center | Qt:align left,m _ show text);//绘制文本,水平向左,垂直居中。

}

定义滚动延迟功能:

//设置滚动延迟,多少毫秒内滚动多少像素pixelSize。

void小部件:setDelay(int ms,int pixelSize)

{

this-m _ ms=ms;

this-m _ pixel size=pixel size;

}

设置字体相关信息:

//设置字体相关信息(正文:字体内容,文本颜色:颜色,速度:字体滚动速度,空白后缀:留白大小)

空的小部件* setText(QString文本,QRgb textColor,float speed,int blankSuffix)

{

this-空白后缀=空白后缀;

此速度=速度;

font.setFamily('微软雅黑');//字体样式——微软雅黑

字体。setpixelsize(height()* 0.0001);//字体像素大小

this-text color=文本颜色;//字体颜色

m _ text=text//文本内容

m _ showText=m _ text//显示内容

//计算字符大小

QFontMetrics度量标准(字体);

int char _ w=指标。水平推进(');//Qt5.11之后,之前请用宽度()

setDelay(50,char _ w * speed);//调用设置延迟()函数,设置滚动延时

int blank line=width()/char _ w2;//

for(int I=0;iblankLine我)

{

m_showText.insert(0,' ');//开头插入空白行个空格

}

m _ moveSize=度量。水平前进(m _ show text)空白后缀;

m _ move offset=0;

//如果计时器没有运行

如果(!timer-isActive())

{

中频(毫秒)

{

定时器启动(毫秒);//启动计时,以m_ms为间隔

}

}

}

五、效果演示

完整效果如下:

以上就是夸脱实现字幕滚动效果的示例代码的详细内容,更多关于夸脱字幕滚动的资料请关注我们其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: