49 lines
1.0 KiB
C++
49 lines
1.0 KiB
C++
#include "loading_widget.h"
|
|
#include <QDebug>
|
|
#include <QPainter>
|
|
|
|
|
|
LoadingAnimationWidget::LoadingAnimationWidget(QWidget *parent) :
|
|
QWidget(parent),
|
|
m_rotate(false),
|
|
m_timer(nullptr),
|
|
m_pixmap(nullptr)
|
|
{
|
|
m_timer = new QTimer(this);
|
|
qDebug()<<"LoadingAnimationWidget";
|
|
connect(m_timer,SIGNAL(timeout()),this,SLOT(timerout()));
|
|
}
|
|
|
|
void LoadingAnimationWidget::SetPixmap(QPixmap *p)
|
|
{
|
|
connect(m_timer,SIGNAL(timeout()),this,SLOT(timerout()));
|
|
|
|
m_timer->setInterval(100);
|
|
m_timer->start(40);
|
|
m_pixmap = p;
|
|
}
|
|
|
|
void LoadingAnimationWidget::timerout()
|
|
{
|
|
m_rotate =true;
|
|
update();
|
|
}
|
|
|
|
void LoadingAnimationWidget::paintEvent(QPaintEvent *)
|
|
{
|
|
static int rotate = 0;
|
|
QPainter painter(this);
|
|
painter.setRenderHint(QPainter::Antialiasing,true);
|
|
painter.translate(width()/2,height()/2);
|
|
|
|
if(m_rotate)
|
|
{
|
|
rotate = (rotate+5)%360;
|
|
m_rotate =false;
|
|
}
|
|
|
|
painter.rotate(rotate);
|
|
if(nullptr != m_pixmap)
|
|
painter.drawPixmap(-m_pixmap->width()/2,-m_pixmap->height()/2,*m_pixmap);
|
|
}
|