#ifndef ELATOOLBUTTONSTYLE_H #define ELATOOLBUTTONSTYLE_H #include #include "ElaDef.h" class QStyleOptionToolButton; class ElaToolButtonStyle : public QProxyStyle { Q_OBJECT Q_PRIVATE_CREATE(bool, IsTransparent) Q_PRIVATE_CREATE(int, BorderRadius) Q_PROPERTY_CREATE(qreal, ExpandIconRotate) Q_PRIVATE_CREATE(bool, IsSelected); public: explicit ElaToolButtonStyle(QStyle* style = nullptr); ~ElaToolButtonStyle(); void drawComplexControl(ComplexControl control, const QStyleOptionComplex* option, QPainter* painter, const QWidget* widget = nullptr) const override; QSize sizeFromContents(ContentsType type, const QStyleOption* option, const QSize& size, const QWidget* widget) const override; private: ElaThemeType::ThemeMode _themeMode; int _contentMargin{6}; int _hasMenuIndicatorWidth{30}; void _drawIndicator(QPainter* painter, const QStyleOptionToolButton* bopt, const QWidget* widget) const; void _drawIcon(QPainter* painter, QRectF iconRect, const QStyleOptionToolButton* bopt, const QWidget* widget) const; void _drawText(QPainter* painter, QRect contentRect, const QStyleOptionToolButton* bopt) const; qreal _calculateExpandIndicatorWidth(const QStyleOptionToolButton* bopt, QPainter* painter) const; }; #endif // ELATOOLBUTTONSTYLE_H