SedSat3 1.1.6
Sediment Source Apportionment Tool - Advanced statistical methods for environmental pollution research
Loading...
Searching...
No Matches
chartview.cpp
Go to the documentation of this file.
1#include "chartview.h"
2#include <QtGui/QMouseEvent>
3
4ChartView::ChartView(QChart *chart, QWidget *parent) :
5 QChartView(chart, parent),
6 m_isTouching(false)
7{
8 setRubberBand(QChartView::RectangleRubberBand);
9}
10
11bool ChartView::viewportEvent(QEvent *event)
12{
13 if (event->type() == QEvent::TouchBegin) {
14 m_isTouching = true;
15
16 chart()->setAnimationOptions(QChart::NoAnimation);
17 }
18 return QChartView::viewportEvent(event);
19}
20
21void ChartView::mousePressEvent(QMouseEvent *event)
22{
23 if (m_isTouching)
24 return;
25
26 if (event->button() == Qt::MiddleButton)
27 {
28 m_lastMousePos = event->pos();
29 event->accept();
30 }
31
32
33
34 QChartView::mousePressEvent(event);
35}
36
37void ChartView::mouseMoveEvent(QMouseEvent *event)
38{
39 if (m_isTouching)
40 return;
41
42 if (event->buttons() == Qt::MiddleButton)
43 {
44 auto dPos = event->pos() - m_lastMousePos;
45 chart()->scroll(-dPos.x(), dPos.y());
46
47 m_lastMousePos = event->pos();
48 event->accept();
49
50 }
51
52 QChartView::mouseMoveEvent(event);
53}
54
55void ChartView::mouseReleaseEvent(QMouseEvent *event)
56{
57 if (m_isTouching)
58 m_isTouching = false;
59
60 chart()->setAnimationOptions(QChart::SeriesAnimations);
61
62 QChartView::mouseReleaseEvent(event);
63}
64
65
66void ChartView::keyPressEvent(QKeyEvent *event)
67{
68 switch (event->key()) {
69 case Qt::Key_Plus:
70 chart()->zoomIn();
71 break;
72 case Qt::Key_Minus:
73 chart()->zoomOut();
74 break;
75 case Qt::Key_Left:
76 chart()->scroll(-10, 0);
77 break;
78 case Qt::Key_Right:
79 chart()->scroll(10, 0);
80 break;
81 case Qt::Key_Up:
82 chart()->scroll(0, 10);
83 break;
84 case Qt::Key_Down:
85 chart()->scroll(0, -10);
86 break;
87 case Qt::Key_Space:
88 chart()->zoomReset();
89 break;
90 default:
91 QGraphicsView::keyPressEvent(event);
92 break;
93 }
94}
95
96void ChartView::mouseDoubleClickEvent( QMouseEvent * e )
97{
98 if ( e->button() == Qt::LeftButton )
99 {
100 chart()->zoomReset();
101 }
102
103 QGraphicsView::mouseDoubleClickEvent( e );
104}
void mouseReleaseEvent(QMouseEvent *event)
Definition chartview.cpp:55
void mouseDoubleClickEvent(QMouseEvent *e)
Definition chartview.cpp:96
ChartView(QChart *chart, QWidget *parent=0)
Definition chartview.cpp:4
void keyPressEvent(QKeyEvent *event)
Definition chartview.cpp:66
QPointF m_lastMousePos
Definition chartview.h:27
void mouseMoveEvent(QMouseEvent *event)
Definition chartview.cpp:37
void mousePressEvent(QMouseEvent *event)
Definition chartview.cpp:21
bool viewportEvent(QEvent *event)
Definition chartview.cpp:11
bool m_isTouching
Definition chartview.h:26