qtmaterialrippleoverlay.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #ifndef QTMATERIALRIPPLEOVERLAY_H
  2. #define QTMATERIALRIPPLEOVERLAY_H
  3. #include <QPainterPath>
  4. #include "lib/qtmaterialoverlaywidget.h"
  5. class QtMaterialRipple;
  6. class QtMaterialRippleOverlay : public QtMaterialOverlayWidget
  7. {
  8. Q_OBJECT
  9. public:
  10. explicit QtMaterialRippleOverlay(QWidget *parent = 0);
  11. ~QtMaterialRippleOverlay();
  12. void addRipple(QtMaterialRipple *ripple);
  13. void addRipple(const QPoint &position, qreal radius = 300);
  14. void removeRipple(QtMaterialRipple *ripple);
  15. inline void setClipping(bool enable);
  16. inline bool hasClipping() const;
  17. inline void setClipPath(const QPainterPath &path);
  18. protected:
  19. void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
  20. inline QList<QtMaterialRipple *> ripples() const;
  21. private:
  22. Q_DISABLE_COPY(QtMaterialRippleOverlay)
  23. void paintRipple(QPainter *painter, QtMaterialRipple *ripple);
  24. QList<QtMaterialRipple *> m_ripples;
  25. QPainterPath m_clipPath;
  26. bool m_useClip;
  27. };
  28. inline void QtMaterialRippleOverlay::setClipping(bool enable)
  29. {
  30. m_useClip = enable;
  31. update();
  32. }
  33. inline bool QtMaterialRippleOverlay::hasClipping() const
  34. {
  35. return m_useClip;
  36. }
  37. inline void QtMaterialRippleOverlay::setClipPath(const QPainterPath &path)
  38. {
  39. m_clipPath = path;
  40. update();
  41. }
  42. inline QList<QtMaterialRipple *> QtMaterialRippleOverlay::ripples() const
  43. {
  44. return m_ripples;
  45. }
  46. #endif // QTMATERIALRIPPLEOVERLAY_H