本文主要介绍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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。