1 /****************************************************************************
2 **
3 ** Copyright (C) 2016 The Qt Company Ltd.
4 ** Contact: https://www.qt.io/licensing/
5 **
6 ** This file is part of the QtWidgets module of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and The Qt Company. For licensing terms
14 ** and conditions see https://www.qt.io/terms-conditions. For further
15 ** information use the contact form at https://www.qt.io/contact-us.
16 **
17 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 3 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL3 included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 3 requirements
23 ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
24 **
25 ** GNU General Public License Usage
26 ** Alternatively, this file may be used under the terms of the GNU
27 ** General Public License version 2.0 or (at your option) the GNU General
28 ** Public license version 3 or any later version approved by the KDE Free
29 ** Qt Foundation. The licenses are as published by the Free Software
30 ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31 ** included in the packaging of this file. Please review the following
32 ** information to ensure the GNU General Public License requirements will
33 ** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34 ** https://www.gnu.org/licenses/gpl-3.0.html.
35 **
36 ** $QT_END_LICENSE$
37 **
38 ****************************************************************************/
39 
40 #ifndef QGRAPHICSSCENEEVENT_H
41 #define QGRAPHICSSCENEEVENT_H
42 
43 #include <QtWidgets/qtwidgetsglobal.h>
44 #include <QtCore/qcoreevent.h>
45 #include <QtCore/qpoint.h>
46 #include <QtCore/qscopedpointer.h>
47 #include <QtCore/qrect.h>
48 #include <QtGui/qpolygon.h>
49 #include <QtCore/qset.h>
50 #if QT_DEPRECATED_SINCE(5, 5)
51 #include <QtCore/qhash.h>
52 #endif
53 
54 QT_REQUIRE_CONFIG(graphicsview);
55 
56 QT_BEGIN_NAMESPACE
57 
58 class QMimeData;
59 class QPointF;
60 class QSizeF;
61 class QWidget;
62 
63 class QGraphicsSceneEventPrivate;
64 class Q_WIDGETS_EXPORT QGraphicsSceneEvent : public QEvent
65 {
66 public:
67     explicit QGraphicsSceneEvent(Type type);
68     ~QGraphicsSceneEvent();
69 
70     QWidget *widget() const;
71     void setWidget(QWidget *widget);
72 
73 protected:
74     QGraphicsSceneEvent(QGraphicsSceneEventPrivate &dd, Type type = None);
75     QScopedPointer<QGraphicsSceneEventPrivate> d_ptr;
76     Q_DECLARE_PRIVATE(QGraphicsSceneEvent)
77 private:
78     Q_DISABLE_COPY(QGraphicsSceneEvent)
79 };
80 
81 class QGraphicsSceneMouseEventPrivate;
82 class Q_WIDGETS_EXPORT QGraphicsSceneMouseEvent : public QGraphicsSceneEvent
83 {
84 public:
85     explicit QGraphicsSceneMouseEvent(Type type = None);
86     ~QGraphicsSceneMouseEvent();
87 
88     QPointF pos() const;
89     void setPos(const QPointF &pos);
90 
91     QPointF scenePos() const;
92     void setScenePos(const QPointF &pos);
93 
94     QPoint screenPos() const;
95     void setScreenPos(const QPoint &pos);
96 
97     QPointF buttonDownPos(Qt::MouseButton button) const;
98     void setButtonDownPos(Qt::MouseButton button, const QPointF &pos);
99 
100     QPointF buttonDownScenePos(Qt::MouseButton button) const;
101     void setButtonDownScenePos(Qt::MouseButton button, const QPointF &pos);
102 
103     QPoint buttonDownScreenPos(Qt::MouseButton button) const;
104     void setButtonDownScreenPos(Qt::MouseButton button, const QPoint &pos);
105 
106     QPointF lastPos() const;
107     void setLastPos(const QPointF &pos);
108 
109     QPointF lastScenePos() const;
110     void setLastScenePos(const QPointF &pos);
111 
112     QPoint lastScreenPos() const;
113     void setLastScreenPos(const QPoint &pos);
114 
115     Qt::MouseButtons buttons() const;
116     void setButtons(Qt::MouseButtons buttons);
117 
118     Qt::MouseButton button() const;
119     void setButton(Qt::MouseButton button);
120 
121     Qt::KeyboardModifiers modifiers() const;
122     void setModifiers(Qt::KeyboardModifiers modifiers);
123 
124     Qt::MouseEventSource source() const;
125     void setSource(Qt::MouseEventSource source);
126 
127     Qt::MouseEventFlags flags() const;
128     void setFlags(Qt::MouseEventFlags);
129 
130 private:
131     Q_DECLARE_PRIVATE(QGraphicsSceneMouseEvent)
132     Q_DISABLE_COPY(QGraphicsSceneMouseEvent)
133 };
134 
135 class QGraphicsSceneWheelEventPrivate;
136 class Q_WIDGETS_EXPORT QGraphicsSceneWheelEvent : public QGraphicsSceneEvent
137 {
138 public:
139     explicit QGraphicsSceneWheelEvent(Type type = None);
140     ~QGraphicsSceneWheelEvent();
141 
142     QPointF pos() const;
143     void setPos(const QPointF &pos);
144 
145     QPointF scenePos() const;
146     void setScenePos(const QPointF &pos);
147 
148     QPoint screenPos() const;
149     void setScreenPos(const QPoint &pos);
150 
151     Qt::MouseButtons buttons() const;
152     void setButtons(Qt::MouseButtons buttons);
153 
154     Qt::KeyboardModifiers modifiers() const;
155     void setModifiers(Qt::KeyboardModifiers modifiers);
156 
157     int delta() const;
158     void setDelta(int delta);
159 
160     Qt::Orientation orientation() const;
161     void setOrientation(Qt::Orientation orientation);
162 
163 private:
164     Q_DECLARE_PRIVATE(QGraphicsSceneWheelEvent)
165     Q_DISABLE_COPY(QGraphicsSceneWheelEvent)
166 };
167 
168 class QGraphicsSceneContextMenuEventPrivate;
169 class Q_WIDGETS_EXPORT QGraphicsSceneContextMenuEvent : public QGraphicsSceneEvent
170 {
171 public:
172     enum Reason { Mouse, Keyboard, Other };
173 
174     explicit QGraphicsSceneContextMenuEvent(Type type = None);
175     ~QGraphicsSceneContextMenuEvent();
176 
177     QPointF pos() const;
178     void setPos(const QPointF &pos);
179 
180     QPointF scenePos() const;
181     void setScenePos(const QPointF &pos);
182 
183     QPoint screenPos() const;
184     void setScreenPos(const QPoint &pos);
185 
186     Qt::KeyboardModifiers modifiers() const;
187     void setModifiers(Qt::KeyboardModifiers modifiers);
188 
189     Reason reason() const;
190     void setReason(Reason reason);
191 
192 private:
193     Q_DECLARE_PRIVATE(QGraphicsSceneContextMenuEvent)
194     Q_DISABLE_COPY(QGraphicsSceneContextMenuEvent)
195 };
196 
197 class QGraphicsSceneHoverEventPrivate;
198 class Q_WIDGETS_EXPORT QGraphicsSceneHoverEvent : public QGraphicsSceneEvent
199 {
200 public:
201     explicit QGraphicsSceneHoverEvent(Type type = None);
202     ~QGraphicsSceneHoverEvent();
203 
204     QPointF pos() const;
205     void setPos(const QPointF &pos);
206 
207     QPointF scenePos() const;
208     void setScenePos(const QPointF &pos);
209 
210     QPoint screenPos() const;
211     void setScreenPos(const QPoint &pos);
212 
213     QPointF lastPos() const;
214     void setLastPos(const QPointF &pos);
215 
216     QPointF lastScenePos() const;
217     void setLastScenePos(const QPointF &pos);
218 
219     QPoint lastScreenPos() const;
220     void setLastScreenPos(const QPoint &pos);
221 
222     Qt::KeyboardModifiers modifiers() const;
223     void setModifiers(Qt::KeyboardModifiers modifiers);
224 
225 private:
226     Q_DECLARE_PRIVATE(QGraphicsSceneHoverEvent)
227     Q_DISABLE_COPY(QGraphicsSceneHoverEvent)
228 };
229 
230 class QGraphicsSceneHelpEventPrivate;
231 class Q_WIDGETS_EXPORT QGraphicsSceneHelpEvent : public QGraphicsSceneEvent
232 {
233 public:
234     explicit QGraphicsSceneHelpEvent(Type type = None);
235     ~QGraphicsSceneHelpEvent();
236 
237     QPointF scenePos() const;
238     void setScenePos(const QPointF &pos);
239 
240     QPoint screenPos() const;
241     void setScreenPos(const QPoint &pos);
242 
243 private:
244     Q_DECLARE_PRIVATE(QGraphicsSceneHelpEvent)
245     Q_DISABLE_COPY(QGraphicsSceneHelpEvent)
246 };
247 
248 class QGraphicsSceneDragDropEventPrivate;
249 class Q_WIDGETS_EXPORT QGraphicsSceneDragDropEvent : public QGraphicsSceneEvent
250 {
251 public:
252     explicit QGraphicsSceneDragDropEvent(Type type = None);
253     ~QGraphicsSceneDragDropEvent();
254 
255     QPointF pos() const;
256     void setPos(const QPointF &pos);
257 
258     QPointF scenePos() const;
259     void setScenePos(const QPointF &pos);
260 
261     QPoint screenPos() const;
262     void setScreenPos(const QPoint &pos);
263 
264     Qt::MouseButtons buttons() const;
265     void setButtons(Qt::MouseButtons buttons);
266 
267     Qt::KeyboardModifiers modifiers() const;
268     void setModifiers(Qt::KeyboardModifiers modifiers);
269 
270     Qt::DropActions possibleActions() const;
271     void setPossibleActions(Qt::DropActions actions);
272 
273     Qt::DropAction proposedAction() const;
274     void setProposedAction(Qt::DropAction action);
275     void acceptProposedAction();
276 
277     Qt::DropAction dropAction() const;
278     void setDropAction(Qt::DropAction action);
279 
280     QWidget *source() const;
281     void setSource(QWidget *source);
282 
283     const QMimeData *mimeData() const;
284     void setMimeData(const QMimeData *data);
285 
286 private:
287     Q_DECLARE_PRIVATE(QGraphicsSceneDragDropEvent)
288     Q_DISABLE_COPY(QGraphicsSceneDragDropEvent)
289 };
290 
291 class QGraphicsSceneResizeEventPrivate;
292 class Q_WIDGETS_EXPORT QGraphicsSceneResizeEvent : public QGraphicsSceneEvent
293 {
294     Q_DECLARE_PRIVATE(QGraphicsSceneResizeEvent)
295     Q_DISABLE_COPY(QGraphicsSceneResizeEvent)
296 public:
297     QGraphicsSceneResizeEvent();
298     ~QGraphicsSceneResizeEvent();
299 
300     QSizeF oldSize() const;
301     void setOldSize(const QSizeF &size);
302 
303     QSizeF newSize() const;
304     void setNewSize(const QSizeF &size);
305 };
306 
307 class QGraphicsSceneMoveEventPrivate;
308 class Q_WIDGETS_EXPORT QGraphicsSceneMoveEvent : public QGraphicsSceneEvent
309 {
310     Q_DECLARE_PRIVATE(QGraphicsSceneMoveEvent)
311     Q_DISABLE_COPY(QGraphicsSceneMoveEvent)
312 public:
313     QGraphicsSceneMoveEvent();
314     ~QGraphicsSceneMoveEvent();
315 
316     QPointF oldPos() const;
317     void setOldPos(const QPointF &pos);
318 
319     QPointF newPos() const;
320     void setNewPos(const QPointF &pos);
321 };
322 
323 #ifndef QT_NO_DEBUG_STREAM
324 Q_WIDGETS_EXPORT QDebug operator<<(QDebug, const QGraphicsSceneEvent *);
325 #endif
326 
327 QT_END_NAMESPACE
328 
329 #endif
330