#ifndef ELAPOPULARCARDFLOATER_H #define ELAPOPULARCARDFLOATER_H #include #include "ElaDef.h" class ElaPushButton; class ElaPopularCard; class ElaPopularCardPrivate; class QGraphicsOpacityEffect; class ElaPopularCardFloater : public QWidget { Q_OBJECT Q_PROPERTY_CREATE(qreal, HoverYOffset); Q_PROPERTY_CREATE(qreal, HoverOpacity); public: explicit ElaPopularCardFloater(ElaPopularCard *card, ElaPopularCardPrivate *cardPrivate, QWidget *parent = nullptr); ~ElaPopularCardFloater(); void showFloater(); void hideFloater(); protected: virtual bool event(QEvent *event) override; virtual void paintEvent(QPaintEvent *event) override; private: friend class ElaPopularCard; ElaThemeType::ThemeMode _themeMode; ElaPushButton *_overButton{nullptr}; QGraphicsOpacityEffect *_opacityEffect{nullptr}; bool _isHideAnimationFinished{true}; ElaPopularCard *_card{nullptr}; ElaPopularCardPrivate *_cardPrivate{nullptr}; QRect _calculateTargetGeometry(QRect cardGeometry); int _floatGeometryOffset{25}; }; #endif // ELAPOPULARCARDFLOATER_H