Files
cbh/ElaWidgetTools/private/ElaPromotionCardPrivate.cpp
2025-09-20 01:41:33 +08:00

36 lines
1.5 KiB
C++

#include "ElaPromotionCardPrivate.h"
#include <QPoint>
#include <QPropertyAnimation>
#include <QtMath>
#include "ElaPromotionCard.h"
ElaPromotionCardPrivate::ElaPromotionCardPrivate(QObject *parent) : QObject{parent} {}
ElaPromotionCardPrivate::~ElaPromotionCardPrivate() {}
qreal ElaPromotionCardPrivate::_getLongestDistance(QPoint point) {
Q_Q(ElaPromotionCard);
qreal topLeftDis = _distance(point, QPoint(0, 0));
qreal topRightDis = _distance(point, QPoint(q->width(), 0));
qreal bottomLeftDis = _distance(point, QPoint(0, q->height()));
qreal bottomRightDis = _distance(point, QPoint(q->width(), q->height()));
QList<qreal> disList{topLeftDis, topRightDis, bottomLeftDis, bottomRightDis};
std::sort(disList.begin(), disList.end());
return disList[3];
}
qreal ElaPromotionCardPrivate::_distance(QPoint point1, QPoint point2) {
return std::sqrt((point1.x() - point2.x()) * (point1.x() - point2.x()) + (point1.y() - point2.y()) * (point1.y() - point2.y()));
}
void ElaPromotionCardPrivate::_startHoverOpacityAnimation(bool isVisible) {
Q_Q(ElaPromotionCard);
QPropertyAnimation *opacityAnimation = new QPropertyAnimation(this, "pHoverOpacity");
connect(opacityAnimation, &QPropertyAnimation::valueChanged, this, [=](const QVariant &value) { q->update(); });
opacityAnimation->setDuration(250);
opacityAnimation->setStartValue(_pHoverOpacity);
opacityAnimation->setEndValue(isVisible ? 1 : 0);
opacityAnimation->start(QAbstractAnimation::DeleteWhenStopped);
}