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 
32 namespace 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;
53  qreal setZoomFactor();
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
armarx::EnhancedGraphicsView::getZoomKeyboardModifier
Qt::KeyboardModifier getZoomKeyboardModifier() const
Definition: EnhancedGraphicsView.cpp:42
armarx::EnhancedGraphicsView::setZoomEnabled
void setZoomEnabled(bool enabled=true)
Definition: EnhancedGraphicsView.cpp:90
armarx::EnhancedGraphicsView::setRotationKeyboardModifier
void setRotationKeyboardModifier(Qt::KeyboardModifier mod)
Definition: EnhancedGraphicsView.cpp:78
armarx::EnhancedGraphicsView::setRotationFactor
void setRotationFactor(qreal factor)
Definition: EnhancedGraphicsView.cpp:84
armarx::EnhancedGraphicsView::getZoomFactor
qreal getZoomFactor() const
Definition: EnhancedGraphicsView.cpp:48
armarx::EnhancedGraphicsView::draggingEnabled
bool draggingEnabled
Definition: EnhancedGraphicsView.h:89
armarx::EnhancedGraphicsView::zoomEnabled
bool zoomEnabled
Definition: EnhancedGraphicsView.h:85
armarx::EnhancedGraphicsView::mouseMoveEvent
void mouseMoveEvent(QMouseEvent *e) override
Definition: EnhancedGraphicsView.cpp:154
armarx::EnhancedGraphicsView::rotationEnabled
bool rotationEnabled
Definition: EnhancedGraphicsView.h:81
armarx::EnhancedGraphicsView::zoomFacor
qreal zoomFacor
Definition: EnhancedGraphicsView.h:87
armarx::EnhancedGraphicsView::draggingButton
Qt::MouseButton draggingButton
Definition: EnhancedGraphicsView.h:91
armarx::EnhancedGraphicsView::setZoomDisabled
void setZoomDisabled(bool disabled=true)
Definition: EnhancedGraphicsView.cpp:96
armarx::EnhancedGraphicsView::setZoomKeyboardModifier
void setZoomKeyboardModifier(Qt::KeyboardModifier mod)
Definition: EnhancedGraphicsView.cpp:102
armarx::EnhancedGraphicsView::setDraggingDisabled
void setDraggingDisabled(bool disabled=true)
Definition: EnhancedGraphicsView.cpp:120
armarx::EnhancedGraphicsView::mousePressEvent
void mousePressEvent(QMouseEvent *e) override
Definition: EnhancedGraphicsView.cpp:147
enabled
std::atomic< bool > * enabled
Definition: RemoteGuiWidgetController.cpp:75
armarx::EnhancedGraphicsView::rotationFactor
qreal rotationFactor
Definition: EnhancedGraphicsView.h:83
armarx::EnhancedGraphicsView::rotationModifier
Qt::KeyboardModifier rotationModifier
Definition: EnhancedGraphicsView.h:82
armarx::EnhancedGraphicsView::getRotationFactor
qreal getRotationFactor() const
Definition: EnhancedGraphicsView.cpp:36
armarx::EnhancedGraphicsView::getDraggingMouseButton
Qt::MouseButton getDraggingMouseButton() const
Definition: EnhancedGraphicsView.cpp:60
armarx::EnhancedGraphicsView::setRotationDisabled
void setRotationDisabled(bool disabled=true)
Definition: EnhancedGraphicsView.cpp:72
armarx::EnhancedGraphicsView::setDraggingKeyboardModifier
void setDraggingKeyboardModifier(Qt::KeyboardModifier mod)
Definition: EnhancedGraphicsView.cpp:126
armarx::EnhancedGraphicsView::zoomModifier
Qt::KeyboardModifier zoomModifier
Definition: EnhancedGraphicsView.h:86
armarx::EnhancedGraphicsView::setZoomFactor
qreal setZoomFactor()
armarx::EnhancedGraphicsView::wheelEvent
void wheelEvent(QWheelEvent *e) override
Definition: EnhancedGraphicsView.cpp:174
armarx::EnhancedGraphicsView::setDraggingMouseButton
void setDraggingMouseButton(Qt::MouseButton button)
Definition: EnhancedGraphicsView.cpp:132
armarx::EnhancedGraphicsView::setRotationEnabled
void setRotationEnabled(bool enabled=true)
Definition: EnhancedGraphicsView.cpp:66
armarx::EnhancedGraphicsView::draggingModifier
Qt::KeyboardModifier draggingModifier
Definition: EnhancedGraphicsView.h:90
armarx::EnhancedGraphicsView::setDraggingEnabled
void setDraggingEnabled(bool enabled=true)
Definition: EnhancedGraphicsView.cpp:114
armarx::EnhancedGraphicsView
The EnhancedGraphicsView is a QGraphicsView with some additional functions.
Definition: EnhancedGraphicsView.h:43
armarx::EnhancedGraphicsView::draggingStartPosition
QPointF draggingStartPosition
Definition: EnhancedGraphicsView.h:92
armarx::EnhancedGraphicsView::setAllVisible
void setAllVisible(bool visible)
Definition: EnhancedGraphicsView.cpp:138
armarx::EnhancedGraphicsView::getDraggingKeyboardModifier
Qt::KeyboardModifier getDraggingKeyboardModifier() const
Definition: EnhancedGraphicsView.cpp:54
armarx::EnhancedGraphicsView::getRotationKeyboardModifier
Qt::KeyboardModifier getRotationKeyboardModifier() const
Definition: EnhancedGraphicsView.cpp:30
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27