一、前言
使用过的控件汇总收集
二、环境
qt57
window10
三、正文
效果:就是使用一个风车图片,然后呜呜旋转,可调节旋转的速度,还有角度等参数
代码:
#include "circlewidget.h"
#include <QPainter>
#include <QTimer>
CircleWidget::CircleWidget(QWidget *parent):
QWidget(parent)
{
m_bg = QImage(":/PIC/icon/main_slices/fan.png");
m_pCircleTimer = new QTimer(this);
m_pCircleTimer->setInterval(50);
connect(m_pCircleTimer, &QTimer::timeout, this, &CircleWidget::onTimeout);
}
void CircleWidget::startCircle()
{
m_pCircleTimer->start();
}
void CircleWidget::stopCircle()
{
m_pCircleTimer->stop();
}
void CircleWidget::paintEvent(QPaintEvent *e)
{
QPainter painter(this);
painter.setPen(Qt::NoPen);
painter.setBrush(Qt::NoBrush);
painter.setRenderHint(QPainter::SmoothPixmapTransform);
painter.translate(this->width() / 2, this->height() / 2); //设置旋转中心
painter.rotate(m_nAngle); //旋转
painter.translate(-(this->width() / 2), -(this->height() / 2)); //将原点复位
painter.drawImage(this->rect(), m_bg);
QWidget::paintEvent(e);
}
void CircleWidget::onTimeout()
{
if(m_nAngle == 360)
{
m_nAngle = 0;
}
m_nAngle += 15;
update();
}
#ifndef CIRCLEWIDGET_H
#define CIRCLEWIDGET_H
#include <QWidget>
class QTimer;
class CircleWidget : public QWidget
{
Q_OBJECT
public:
explicit CircleWidget(QWidget *parent = 0);
void startCircle();
void stopCircle();
protected:
void paintEvent(QPaintEvent *e);
private slots:
void onTimeout();
private:
QImage m_bg;
QTimer *m_pCircleTimer = Q_NULLPTR;
int m_nAngle = 0;
};
#endif // CIRCLEWIDGET_H