chenwei 26248213bf fix: 任务栏蓝牙插件无刷新按钮
蓝牙插件刷新按钮未添加,按照之前的蓝牙插件界面刷新按钮位置添加刷新按钮

Log: 蓝牙插件刷新按钮去掉了无法刷新列表
Bug: https://pms.uniontech.com/zentao/bug-view-60828.html
Change-Id: I9c6813e1d57e4b83db2f8e224e107c06215e802f
2021-01-12 16:07:11 +08:00

74 lines
1.7 KiB
C++

#include "refreshbutton.h"
#include <QTimer>
#include <QPainter>
#include <QIcon>
#include <QMouseEvent>
#include <QPropertyAnimation>
#include <QDebug>
RefreshButton::RefreshButton(QWidget *parent)
: QWidget(parent)
, m_refreshTimer(new QTimer(this))
, m_rotateAngle(0)
{
setAccessibleName("RefreshButton");
m_refreshTimer->setInterval(500 / 60);
initConnect();
}
void RefreshButton::setRotateIcon(QString path)
{
m_pixmap = QIcon(path).pixmap(size());
}
void RefreshButton::startRotate()
{
m_refreshTimer->start();
if (m_rotateAngle == 360) {
m_rotateAngle = 0;
}
m_rotateAngle += 360 / 60;
update();
}
void RefreshButton::stopRotate()
{
m_refreshTimer->stop();
m_rotateAngle = 0;
update();
}
void RefreshButton::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_rotateAngle);
painter.translate(-(this->width() / 2), -(this->height() / 2));
painter.drawPixmap(this->rect(), m_pixmap);
QWidget::paintEvent(e);
}
void RefreshButton::mousePressEvent(QMouseEvent *event)
{
m_pressPos = event->pos();
return QWidget::mousePressEvent(event);
}
void RefreshButton::mouseReleaseEvent(QMouseEvent *event)
{
if (rect().contains(m_pressPos) && rect().contains(event->pos()) && !m_refreshTimer->isActive())
Q_EMIT clicked();
return QWidget::mouseReleaseEvent(event);
}
void RefreshButton::initConnect()
{
connect(m_refreshTimer, &QTimer::timeout, this, &RefreshButton::startRotate);
}