#ifndef ELASCROLLBARSTYLE_H #define ELASCROLLBARSTYLE_H #include #include "ElaDef.h" class ElaScrollBar; class ElaScrollBarStyle : public QProxyStyle { Q_OBJECT Q_PRIVATE_CREATE(bool, IsExpand) Q_PROPERTY_CREATE(qreal, Opacity) Q_PROPERTY_CREATE(qreal, SliderExtent) Q_PRIVATE_CREATE(ElaScrollBar *, ScrollBar) public: explicit ElaScrollBarStyle(QStyle *style = nullptr); ~ElaScrollBarStyle(); void drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget = nullptr) const override; int pixelMetric(PixelMetric metric, const QStyleOption *option = nullptr, const QWidget *widget = nullptr) const override; int styleHint(StyleHint hint, const QStyleOption *option = nullptr, const QWidget *widget = nullptr, QStyleHintReturn *returnData = nullptr) const override; void startExpandAnimation(bool isExpand); private: ElaThemeType::ThemeMode _themeMode; qreal _sliderMargin{2.5}; int _scrollBarExtent{10}; }; #endif // ELASCROLLBARSTYLE_H