听歌的时候看到网易云音乐播放器就是在播放歌曲的时候,有一个歌星的图片在旋转,停止就不动了,所以自己闲着没事的时候,就写了一个小功能,可将此程序嵌入到你们的音乐播放器项目中。
看代码
#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QTimer>#include <QPushButton>class Widget : public QWidget{Q_OBJECTpublic: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