QSint Library  0.2.2
scrollpanner.h
1 #ifndef SCROLLPANNER_H
2 #define SCROLLPANNER_H
3 
4 #include <QAbstractScrollArea>
5 #include <QAbstractSlider>
6 #include <QPen>
7 #include <QBrush>
8 
9 
10 namespace QSint
11 {
12 
13 
42 class ScrollPanner : public QWidget
43 {
44  Q_OBJECT
45 
46  Q_PROPERTY(double opacity READ opacity WRITE setOpacity)
47  Q_PROPERTY(double sliderOpacity READ sliderOpacity WRITE setSliderOpacity)
48  Q_PROPERTY(bool panning READ isPanningEnabled WRITE enablePanning)
49  Q_PROPERTY(QPen backgroundPen READ backgroundPen WRITE setBackgroundPen)
50  Q_PROPERTY(QBrush backgroundBrush READ backgroundBrush WRITE setBackgroundBrush)
51  Q_PROPERTY(QPen sliderPen READ sliderPen WRITE setSliderPen)
52  Q_PROPERTY(QBrush sliderBrush READ sliderBrush WRITE setSliderBrush)
53 
54 public:
56  explicit ScrollPanner(QWidget *parent = 0);
58  virtual ~ScrollPanner();
59 
60  void setBackgroundPen(const QPen& pen);
61  inline QPen backgroundPen() const { return m_pen; }
62 
63  void setBackgroundBrush(const QBrush& brush);
64  inline QBrush backgroundBrush() const { return m_brush; }
65 
66  void setSliderPen(const QPen& pen);
67  inline QPen sliderPen() const { return m_panPen; }
68 
69  void setSliderBrush(const QBrush& brush);
70  inline QBrush sliderBrush() const { return m_panBrush; }
71 
72  void setOpacity(double opacity);
73  inline double opacity() const { return m_opacity; }
74 
75  void setSliderOpacity(double opacity);
76  inline double sliderOpacity() const { return m_panOpacity; }
77 
81  inline bool isPanningEnabled() const { return m_panning; }
82 
83  void connectSource(QAbstractScrollArea *area);
84  void connectSource(QAbstractSlider *horizontal, QAbstractSlider *vertical);
85  void disconnectSource();
86 
87  virtual QSize minimumSizeHint() const
88  {
89  return QSize(64,64);
90  }
91 
92 signals:
93  void scrollHorizontal(int value);
94  void scrollVertical(int value);
95 
96 public slots:
97  void setHorizontalRange(int min, int max);
98  void setHorizontalValue(int value);
99  void setHorizontalViewSize(int size);
100 
101  void setVerticalRange(int min, int max);
102  void setVerticalValue(int value);
103  void setVerticalViewSize(int size);
104 
105  void setViewSize(const QSize &size);
106 
110  void enablePanning(bool on = true);
111 
112 protected:
113  virtual void paintEvent(QPaintEvent *);
114  virtual bool eventFilter(QObject *, QEvent *);
115  virtual void mousePressEvent(QMouseEvent *);
116  virtual void mouseMoveEvent(QMouseEvent *);
117  virtual bool event(QEvent *);
118 
119  virtual void drawBackground(QPainter& p, QRect r);
120  virtual void drawSlider(QPainter& p, QRect r);
121 
122  void calculateXsize(int size);
123  void calculateYsize(int size);
124 
125  void connectH(QAbstractSlider *sl);
126  void connectV(QAbstractSlider *sl);
127 
128  int m_minX, m_maxX, m_sizeX, m_valueX;
129  int m_valueXpan, m_sizeXpan;
130 
131  int m_minY, m_maxY, m_sizeY, m_valueY;
132  int m_valueYpan, m_sizeYpan;
133 
134  QSize m_viewSize;
135 
136  QPen m_pen, m_panPen;
137  QBrush m_brush, m_panBrush;
138 
139  double m_opacity, m_panOpacity;
140 
141  bool m_panning;
142  int m_oldX, m_oldY;
143 
144  QAbstractSlider *m_sliderX, *m_sliderY;
145 };
146 
147 
148 } // namespace QSint
149 
150 
151 #endif // SCROLLPANNER_H
ScrollPanner(QWidget *parent=0)
Definition: scrollpanner.cpp:14
2-dimensional scrolling widget.
Definition: scrollpanner.h:42
void enablePanning(bool on=true)
Definition: scrollpanner.cpp:234
bool isPanningEnabled() const
Definition: scrollpanner.h:81
virtual ~ScrollPanner()
Definition: scrollpanner.cpp:35

© Sintegrial Technologies 2011-2014
http://www.sintegrial.com