目录
一、项目介绍
- 一、项目介绍
- 二、项目基本配置
- 三、UI界面设计
- 四、主程序实现
- 4.1 widget.h头文件
- 4.2 widget.cpp源文件
- 五、效果演示
利用QTimer实现字幕滚动功能,可以实现自行更改文本内容、自适应文本大小、自由调整速度等功能。
二、项目基本配置新建一个Qt案例,项目名称为“TextScroll”,基类选择“QWidget”,取消创建UI界面复选框的选中状态,完成项目创建。
三、UI界面设计无UI界面
四、主程序实现 4.1 widget.h头文件声明私有变量和事件:
private:
QTimer* timer; //时间定时器
QRgb textColor; //文本颜色
QString m_text; //文本内容
QString m_showText; //显示
QFont font; //字体
int m_ms;
int m_pixelSize;
int m_moveOffset;
int m_moveSize;
int blankSuffix; //空白后缀,值越大空白后缀越多
float speed; //滑动速度,值越大越快
void paintEvent(QPaintEvent *event);
void resizeEvent(QResizeEvent *event);
声明函数和槽函数:
public:
void setDelay(int ms,int pixelSize); //设置滚动延迟,多少ms滚动多少像素点
void setText(QString text,QRgb textColor,float speed=0.70,int blankSuffix=20); //设置字体,调用该函数后,将会自动启动定时器来滚动字幕
//void restart();
public slots:
void timeOut();
4.2 widget.cpp源文件
主函数内容如下:
resize(600,100);//调整窗口大小
timer = new QTimer(this);//创建定时器
connect(timer, SIGNAL(timeout()), this, SLOT(timeOut()));
QString text="人生百相,世态万千,悲悲喜喜,才构成了人生的完美;谋事在人,成事在天。"
"做过的事不要后悔。经常可以看到不少人自怨自艾,"
"为曾经做过的错事后悔不已,为过去的事而消沉,为过去的事而落魄。世上永远没有后悔药。";
QRgb textColor=qRgb(67,142,219);//字体颜色——蓝色
float speed=0.4;
int blankSuffix=0;
setText(text,textColor,speed,blankSuffix);
timeOut()槽函数:
//槽函数
void Widget::timeOut(){
qDebug()blankSuffix = blankSuffix;
this->speed = speed;
font.setFamily("Microsoft Yahei");//字体样式——微软雅黑
font.setPixelSize(height()*0.0001); //字体像素大小
this->textColor = textColor; //字体颜色
m_text = text; //文本内容
m_showText = m_text; //显示内容
//计算字符大小
QFontMetrics metrics(font);
int char_w = metrics.horizontalAdvance(" ");//Qt5.11之后,之前请用width()
setDelay(50,char_w*speed);//调用setDelay()函数,设置滚动延时
int blankLine =width()/char_w+2;//
for(int i=0;iisActive())
{
if(m_ms)
{
timer->start(m_ms);//启动计时,以m_ms为间隔
}
}
}
五、效果演示
完整效果如下:
如果没有看懂的话,完整代码可以参考:https://download.csdn.net/download/didi_ya/75814629
ok,以上便是本文的全部内容了,如果对你有所帮助,记得点个赞哟~