EnhancedGraphicsView.h
Go to the documentation of this file.
1/*
2 * This file is part of ArmarX.
3 *
4 * ArmarX is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 *
8 * ArmarX is distributed in the hope that it will be useful, but
9 * WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * @package ArmarXGui::EnhancedGraphicsView
17 * @author Raphael Grimm ( raphael dot grimm at kit dot edu )
18 * @date 2017
19 * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20 * GNU General Public License
21 */
22
23#pragma once
24
25#include <cmath>
26
27#include <QGraphicsView>
28#include <QMouseEvent>
29#include <QPointF>
30#include <QWheelEvent>
31
32namespace armarx
33{
34 /**
35 * @brief The EnhancedGraphicsView is a QGraphicsView with some additional
36 * functions.
37 *
38 * Additional functions are:
39 * - Zooming (default ctrl+scroll)
40 * - Roatating (default shift+scroll)
41 * - Dragging the scene (default ctrl+left click+dragging)
42 */
43 class EnhancedGraphicsView : public QGraphicsView
44 {
45 Q_OBJECT
46 public:
47 using QGraphicsView::QGraphicsView;
48
49 Qt::KeyboardModifier getRotationKeyboardModifier() const;
50 qreal getRotationFactor() const;
51
52 Qt::KeyboardModifier getZoomKeyboardModifier() const;
54 qreal getZoomFactor() const;
55
56 Qt::KeyboardModifier getDraggingKeyboardModifier() const;
57 Qt::MouseButton getDraggingMouseButton() const;
58 public slots:
59 void setRotationEnabled(bool enabled = true);
60 void setRotationDisabled(bool disabled = true);
61 void setRotationKeyboardModifier(Qt::KeyboardModifier mod);
62 void setRotationFactor(qreal factor);
63
64 void setZoomEnabled(bool enabled = true);
65 void setZoomDisabled(bool disabled = true);
66 void setZoomKeyboardModifier(Qt::KeyboardModifier mod);
67 void setZoomFactor(qreal factor);
68
69 void setDraggingEnabled(bool enabled = true);
70 void setDraggingDisabled(bool disabled = true);
71 void setDraggingKeyboardModifier(Qt::KeyboardModifier mod);
72 void setDraggingMouseButton(Qt::MouseButton button);
73
74 void setAllVisible(bool visible);
75
76 protected:
77 void mousePressEvent(QMouseEvent* e) override;
78 void mouseMoveEvent(QMouseEvent* e) override;
79 void wheelEvent(QWheelEvent* e) override;
80
81 bool rotationEnabled{true};
82 Qt::KeyboardModifier rotationModifier{Qt::ShiftModifier};
83 qreal rotationFactor{0.01};
84
85 bool zoomEnabled{true};
86 Qt::KeyboardModifier zoomModifier{Qt::ControlModifier};
87 qreal zoomFacor{1.05};
88
89 bool draggingEnabled{true};
90 Qt::KeyboardModifier draggingModifier{Qt::ControlModifier};
91 Qt::MouseButton draggingButton{Qt::LeftButton};
93 };
94} // namespace armarx
The EnhancedGraphicsView is a QGraphicsView with some additional functions.
void mousePressEvent(QMouseEvent *e) override
void setRotationDisabled(bool disabled=true)
void mouseMoveEvent(QMouseEvent *e) override
void setZoomDisabled(bool disabled=true)
Qt::KeyboardModifier rotationModifier
void wheelEvent(QWheelEvent *e) override
Qt::KeyboardModifier getDraggingKeyboardModifier() const
void setDraggingMouseButton(Qt::MouseButton button)
Qt::KeyboardModifier getZoomKeyboardModifier() const
void setDraggingEnabled(bool enabled=true)
void setDraggingKeyboardModifier(Qt::KeyboardModifier mod)
void setDraggingDisabled(bool disabled=true)
Qt::KeyboardModifier draggingModifier
Qt::KeyboardModifier getRotationKeyboardModifier() const
Qt::MouseButton getDraggingMouseButton() const
void setRotationEnabled(bool enabled=true)
void setRotationKeyboardModifier(Qt::KeyboardModifier mod)
void setZoomEnabled(bool enabled=true)
void setZoomKeyboardModifier(Qt::KeyboardModifier mod)
This file offers overloads of toIce() and fromIce() functions for STL container types.