听歌的时候看到网易云音乐播放器就是在播放歌曲的时候,有一个歌星的图片在旋转,停止就不动了,所以自己闲着没事的时候,就写了一个小功能,可将此程序嵌入到你们的音乐播放器项目中。
看代码
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QTimer>
#include <QPushButton>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
protected:
void paintEvent(QPaintEvent *event);
public slots:
void upDateRote();
void onStartorStopRote();
private:
QTimer *m_pTimer;
int m_Rote=0;
QPushButton *m_pbtn=nullptr;
bool m_bStart=false;
};
#endif // WIDGET_H
#include "widget.h"
#include <qpainter.h>
#include <qdebug.h>
#include <qpushbutton.h>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
this->resize(800,500);
m_pTimer=new QTimer();
connect(m_pTimer,&QTimer::timeout,this,&Widget::upDateRote);
//m_pTimer->start(100);
m_pbtn=new QPushButton(this);
m_pbtn->setText(tr("Start"));
m_pbtn->setFixedSize(118,27);
connect(m_pbtn,&QPushButton::clicked,this,&Widget::onStartorStopRote);
}
Widget::~Widget()
{
}
void Widget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
QPainterPath painterPath;
painterPath.addEllipse(100,100,200,200);
painter.setClipPath(painterPath);
painter.drawPath(painterPath);
QPixmap pixMap("C:/Users/dujia/Desktop/zj.jpg");
QTransform transform;
transform.translate(200,200); //平移坐标原点 必须
painter.setTransform(transform);
painter.save();
painter.rotate(2*m_Rote);
//将需要旋转的内容绘制在中间
painter.drawPixmap(-100,-100,200,200,pixMap); //旋转操作始终是围绕坐标原点进行旋转
painter.restore();
}
void Widget::upDateRote()
{
m_Rote=m_Rote+1;
if(m_Rote==180)
{
m_Rote=0;
}
update();
}
void Widget::onStartorStopRote()
{
m_bStart=!m_bStart;
if(m_bStart)
{
m_pTimer->start(100);
m_pbtn->setText(tr("Stop"));
}
else
{
m_pTimer->stop();
m_pbtn->setText(tr("Start"));
}
}
看下效果:
喜欢的就点个赞呗(๑′ᴗ‵๑)I Lᵒᵛᵉᵧₒᵤ❤
ヾ( ̄▽ ̄)ByeBye