Qt中使用QLabel滚动显示文字、背景透明且限制显示时间,即可以在播放视频时显示

在.h文件中:

#include <QLabel>
#include <QTimer>
private:
    void showScrollingText();
    int m_index;
    int m_exchange;
    int m_startTime;
    QLabel *m_labelScrolling;
    QString m_showText;
    QTimer *m_timer;

在.cpp文件中:

#include <QTime>
#include <QFont>
#include <QPalette>

获取实时时间的函数:

int getCurrentTime()
{
    int tm = time(NULL);
    return tm;
}

构造函数:

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
      ui->setupUi(this);
    m_index = 0;
    m_exchange = 0;
    m_startTime = 0;
    m_labelScrolling = new QLabel(this);
    m_labelScrolling->setGeometry(0, 200, 240, 40);
    m_labelScrolling->setAlignment(Qt::AlignCenter);
    m_timer = new QTimer(this);
    connect(m_timer, &QTimer::timeout, this, &Widget::showScrollingText);
}

    文字会在QLabel上显示,setGeometry(0, 200, 240, 40)中的第1、2个参数是以左上角为原点的坐标,第3、4个参数是设置label的大小;setAlignment(Qt::AlignCenter)设置居中显示;由定时器启动showScrollingText()从而显示文字。

 

启动函数:

{
    m_showText = "Hello World!";
    m_index = 0;
    m_exchange = 0;
    m_startTime = getCurrentTime();
    m_timer->start(400);
}

实现显示的函数:

void Widget::showScrollingText()
{
    printf("showScorllingtext...\n");
    int m_size = m_showText.size();
    int fontsize = 20;
    QFont ftt("Microsoft YaHei", fontsize, 63);
    QPalette pal;
    pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00));
    pal.setColor(QPalette::WindowText, Qt::blue);

    switch (m_exchange)
    {
	case 0:
	    m_labelScrolling->setText(m_showText.left(m_index++));
	    if (m_index == m_size){
		m_exchange = 1;
	    }
	    break;
	case 1:
	    m_labelScrolling->setText(m_showText.right(m_index--));
	    if (m_index == 0){
		m_exchange = 0;
            }
	    break;
	default:
	    break;
    }
	
    m_labelScrolling->setFont(ftt);
    m_labelScrolling->setPalette(pal);
    m_labelScrolling->show();

    if (getCurrentTime() - m_startTime > 10 && m_index == 0){
	m_timer->stop();
	m_labelScrolling->hide();
    }
}

    m_size用来获取要显示的字符串大小;QFont定义的变量用来设置显示文字的大小;QPalette定义的变量用来设置背景透明以及字体的颜色。m_showText.left(m_index++),在初始时m_index为0,每执行一次showScrollingText(),m_index都会加1,也就是添加一个字节;当m_index等于m_size时,就会换成执行m_showText.right(m_index--),又会从左边开始一个字一个字的减少,从而达到文字滚动的效果。最后的if语句在显示时间超过10s且m_index=0时,就会执行,然后停止定时器以及将label隐藏。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值