#ifndef ELASCROLLBARPRIVATE_H #define ELASCROLLBARPRIVATE_H #include #include #include #include "ElaProperty.h" class QTimer; class QPropertyAnimation; class ElaScrollBar; class ElaScrollBarPrivate : public QObject { Q_OBJECT Q_D_CREATE(ElaScrollBar) Q_PROPERTY_CREATE_D(bool, IsAnimation) Q_PROPERTY_CREATE_D(qreal, SpeedLimit) Q_PROPERTY_CREATE(int, TargetMaximum) public: explicit ElaScrollBarPrivate(QObject *parent = nullptr); ~ElaScrollBarPrivate(); Q_SLOT void onRangeChanged(int min, int max); private: QScrollBar *_originScrollBar{nullptr}; QAbstractScrollArea *_originScrollArea{nullptr}; QTimer *_expandTimer{nullptr}; bool _isExpand{false}; QPropertyAnimation *_slideSmoothAnimation{nullptr}; int _scrollValue{-1}; void _scroll(Qt::KeyboardModifiers modifiers, int value); int _pixelPosToRangeValue(int pos) const; // 映射处理函数 void _initAllConfig(); void _handleScrollBarValueChanged(QScrollBar *scrollBar, int value); void _handleScrollBarRangeChanged(int min, int max); void _handleScrollBarGeometry(); }; #endif // ELASCROLLBARPRIVATE_H