QT 用QTimer实现滚动显示文字

 当控件或屏幕较小时,显示的文字较多,无法完全显示,则需要滚动显示文字,其他有用Qpainter实现的,这里为了方便,用QTimer与控件setTEXT事件。

原理:将需要显示的文字以文字+空格+文字的新式重新组合,通过Timer每次更新从左边第i个显示固定个数的字体,每次timer都i加一。例如:显示的文字时“12345”,那么组合成新的Qstring是“12345 12345”,中间的空格是为了主观看上去是一个“12345”的字符串在循环滚动。用qtimer计时,第2次显示“1234”,第2次显示“2345”,第3次显示“345 ”,第4次显示“45 1”,第5次显示“5 12”,第6次显示“ 123”,第7次显示“1234”如此循环显示。

setText(softversion.mid(soft_i,4)。表示控件设置文字内容为softversion字符串中从左边第soft_i开始显示4个字符,即显示第soft_i,soft_i+1,soft_i+2,soft_i+3,这四个字符。

.H   
#include 
private:
 QString softversion="";
    int soft_i=0;
    int soft_lenth=0;

public slots:
 void soft_timeout();

.CPP

    softtimer=new QTimer(this);
    softtimer->setInterval(200);
    connect(softtimer, SIGNAL(timeout()), this, SLOT(soft_timeout()));

    if(software_version.length()>23)
    {
        softversion=software_version+"     "+software_version;
        soft_lenth=software_version.length();
        AboutAre->setname(1,software_version.left(23));
        soft_i=0;
        softtimer->start();
    }
    else {
        AboutAre->setname(1,software_version);
    }




void AboutPage::soft_timeout()
{
    if(soft_lenth>23){
        if( (soft_lenth+5)<=soft_i)
            soft_i=0;
        AboutAre->setname(1,softversion.mid(soft_i,23));
        soft_i++;
    }
}

 

 

 

 

 

你可能感兴趣的:(QT,技术笔记,qt)