#include "qautonumlabel.h"
#include<cctype>
QAutoNumLabel::QAutoNumLabel(QWidget *parent) :
QLabel(parent)
{
timer = new QTimer(this);
connect(timer,SIGNAL(timeout()),this,SLOT(updateNum()));
time = 1000;
count = 0;
maxcount = 50;
}
void QAutoNumLabel::setTime(int time){
this->time = time;
timer->start(time/maxcount);
}
void QAutoNumLabel::setCount(int c)
{
maxcount = c;
}
void QAutoNumLabel::setNum(QString num){
this->num = num.toDouble();
}
void QAutoNumLabel::updateNum(){
setText(QString::number(count*num/maxcount));
count++;
if(count>maxcount){
timer->stop();
count = 0;
}
}
还有一种简单的方式,通过QPropertyAnimation自定义setText属性,通过动画进行Qlabel数子变化,下面是简单的定义使用,在1s内将1变成200.比较简单
Q_PROPERTY(int text READ text WRITE setText)//添加动画属性
void setText(const int);
int text()const;
QPropertyAnimation *pAnimation = new QPropertyAnimation(this, "text");
pAnimation->setDuration(1000);
pAnimation->setKeyValueAt(0, 1);
pAnimation->setKeyValueAt(0.5, 100);
pAnimation->setKeyValueAt(1, 200);
pAnimation->start(QAbstractAnimation::DeleteWhenStopped);