1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > qt实现网易云音乐播放器的图片旋转功能(paintevent)

qt实现网易云音乐播放器的图片旋转功能(paintevent)

时间:2022-06-21 03:56:31

相关推荐

qt实现网易云音乐播放器的图片旋转功能(paintevent)

听歌的时候看到网易云音乐播放器就是在播放歌曲的时候,有一个歌星的图片在旋转,停止就不动了,所以自己闲着没事的时候,就写了一个小功能,可将此程序嵌入到你们的音乐播放器项目中。

看代码

#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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。