QLabel和QTimer之滚动字幕

一、实现功能:有时候做项目需要用到滚动字幕的效果,其实实现很简单,只需要使用一个定时器QTimer和QLabel就可以达到效果啦。

二、实现效果:
这里写图片描述

三、代码示例:

/***************.h文件***************/
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTimer>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

public slots:
    void dealRollingTitle();

private:
    Ui::Widget *ui;

    QString m_labelTitle;
    QTimer *m_pTimer;
};

#endif // WIDGET_H

/***************.cpp文件***************/
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    m_labelTitle = QString(tr("博客地址:http://blog.csdn.net/toby54king."));

    m_pTimer = new QTimer(this);
    m_pTimer->setInterval(200);
    connect(m_pTimer,SIGNAL(timeout()),this,SLOT(dealRollingTitle()));
    m_pTimer->start();
}

Widget::~Widget()
{
    delete ui;
}

// 函数说明:定时器刷新
// 作   者:ISMILE_LI
void Widget::dealRollingTitle()
{
    static int pos = 0;
    if(pos > m_labelTitle.length())
        pos = 0;

    ui->label->setText(m_labelTitle.mid(pos));
    ui->label_2->setText(m_labelTitle.right(pos));
    ui->label_3->setText(m_labelTitle.left(pos));

    pos++;
}

源代码下载地址,需要一点积分,没有必要的话不需要下载源码的,文中主要代码都有了
http://download.csdn.net/download/toby54king/10132993

posted @ 2017-11-25 23:55  ISmileLi  阅读(111)  评论(0编辑  收藏  举报