blob: 1a0b1f80af58a434ff1b4db401a364a73120f714 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
#ifndef INTERACTIVE_VIEW_H
#define INTERACTIVE_VIEW_H
#include <QGraphicsView>
#include <QWheelEvent>
#include <QKeyEvent>
class InteractiveView : public QGraphicsView
{
public:
explicit InteractiveView(QWidget * parent);
qreal panSpeed;
qreal zoomDelta;
qreal zoomKey;
Qt::MouseButton panButton;
void pan(QPointF delta);
void zoom(float scaleFactor);
void zoomIn();
void zoomOut();
qreal getScale() const;
protected:
void keyPressEvent(QKeyEvent*) override;
void keyReleaseEvent(QKeyEvent*) override;
void mouseMoveEvent(QMouseEvent*) override;
void mousePressEvent(QMouseEvent*) override;
void mouseReleaseEvent(QMouseEvent*) override;
void wheelEvent(QWheelEvent*) override;
private:
// Flags to determine if zooming or panning should be done.
bool _doMousePanning;
bool _doKeyZoom;
QPoint _lastMousePos;
qreal _scale;
void setMaxSize();
};
#endif // INTERACTIVE_VIEW_H
|