File indexing completed on 2025-09-16 09:04:59
0001
0002
0003
0004 #ifndef QEVENT_H
0005 #define QEVENT_H
0006
0007 #if 0
0008 #pragma qt_class(QtEvents)
0009 #endif
0010
0011 #include <QtGui/qtguiglobal.h>
0012
0013 #include <QtCore/qcoreevent.h>
0014 #include <QtCore/qiodevice.h>
0015 #include <QtCore/qlist.h>
0016 #include <QtCore/qnamespace.h>
0017 #include <QtCore/qstring.h>
0018 #include <QtCore/qurl.h>
0019 #include <QtCore/qvariant.h>
0020 #include <QtGui/qeventpoint.h>
0021 #include <QtGui/qpointingdevice.h>
0022 #include <QtGui/qregion.h>
0023 #include <QtGui/qwindowdefs.h>
0024
0025 #if QT_CONFIG(shortcut)
0026 # include <QtGui/qkeysequence.h>
0027 #endif
0028
0029 class tst_QEvent;
0030
0031 QT_BEGIN_NAMESPACE
0032
0033 class QFile;
0034 class QAction;
0035 class QMouseEvent;
0036 template <typename T> class QPointer;
0037 class QPointerEvent;
0038 class QScreen;
0039 #if QT_CONFIG(shortcut)
0040 class QShortcut;
0041 #endif
0042 class QTabletEvent;
0043 class QTouchEvent;
0044 #if QT_CONFIG(gestures)
0045 class QGesture;
0046 #endif
0047
0048 class Q_GUI_EXPORT QInputEvent : public QEvent
0049 {
0050 Q_DECL_EVENT_COMMON(QInputEvent)
0051 public:
0052 explicit QInputEvent(Type type, const QInputDevice *m_dev, Qt::KeyboardModifiers modifiers = Qt::NoModifier);
0053
0054 const QInputDevice *device() const { return m_dev; }
0055 QInputDevice::DeviceType deviceType() const { return m_dev ? m_dev->type() : QInputDevice::DeviceType::Unknown; }
0056 inline Qt::KeyboardModifiers modifiers() const { return m_modState; }
0057 inline void setModifiers(Qt::KeyboardModifiers modifiers) { m_modState = modifiers; }
0058 inline quint64 timestamp() const { return m_timeStamp; }
0059 virtual void setTimestamp(quint64 timestamp) { m_timeStamp = timestamp; }
0060
0061 protected:
0062 QInputEvent(Type type, PointerEventTag, const QInputDevice *dev, Qt::KeyboardModifiers modifiers = Qt::NoModifier);
0063 QInputEvent(Type type, SinglePointEventTag, const QInputDevice *dev, Qt::KeyboardModifiers modifiers = Qt::NoModifier);
0064
0065 const QInputDevice *m_dev = nullptr;
0066 quint64 m_timeStamp = 0;
0067 Qt::KeyboardModifiers m_modState = Qt::NoModifier;
0068
0069 quint32 m_reserved = 0;
0070 };
0071
0072 class Q_GUI_EXPORT QPointerEvent : public QInputEvent
0073 {
0074 Q_GADGET
0075 Q_DECL_EVENT_COMMON(QPointerEvent)
0076 public:
0077 explicit QPointerEvent(Type type, const QPointingDevice *dev,
0078 Qt::KeyboardModifiers modifiers = Qt::NoModifier, const QList<QEventPoint> &points = {});
0079
0080 const QPointingDevice *pointingDevice() const;
0081 QPointingDevice::PointerType pointerType() const {
0082 return pointingDevice() ? pointingDevice()->pointerType() : QPointingDevice::PointerType::Unknown;
0083 }
0084 void setTimestamp(quint64 timestamp) override;
0085 qsizetype pointCount() const { return m_points.size(); }
0086 QEventPoint &point(qsizetype i);
0087 const QList<QEventPoint> &points() const { return m_points; }
0088 QEventPoint *pointById(int id);
0089 bool allPointsGrabbed() const;
0090 virtual bool isBeginEvent() const { return false; }
0091 virtual bool isUpdateEvent() const { return false; }
0092 virtual bool isEndEvent() const { return false; }
0093 bool allPointsAccepted() const;
0094 virtual void setAccepted(bool accepted) override;
0095 QObject *exclusiveGrabber(const QEventPoint &point) const;
0096 void setExclusiveGrabber(const QEventPoint &point, QObject *exclusiveGrabber);
0097 QList<QPointer <QObject>> passiveGrabbers(const QEventPoint &point) const;
0098 void clearPassiveGrabbers(const QEventPoint &point);
0099 bool addPassiveGrabber(const QEventPoint &point, QObject *grabber);
0100 bool removePassiveGrabber(const QEventPoint &point, QObject *grabber);
0101
0102 protected:
0103 QPointerEvent(Type type, SinglePointEventTag, const QInputDevice *dev, Qt::KeyboardModifiers modifiers = Qt::NoModifier);
0104
0105 QList<QEventPoint> m_points;
0106 };
0107
0108 class Q_GUI_EXPORT QSinglePointEvent : public QPointerEvent
0109 {
0110 Q_GADGET
0111 Q_PROPERTY(QObject *exclusivePointGrabber READ exclusivePointGrabber
0112 WRITE setExclusivePointGrabber)
0113
0114 Q_DECL_EVENT_COMMON(QSinglePointEvent)
0115 public:
0116 inline Qt::MouseButton button() const { return m_button; }
0117 inline Qt::MouseButtons buttons() const { return m_mouseState; }
0118
0119 inline QPointF position() const
0120 { Q_ASSERT(!m_points.isEmpty()); return m_points.first().position(); }
0121 inline QPointF scenePosition() const
0122 { Q_ASSERT(!m_points.isEmpty()); return m_points.first().scenePosition(); }
0123 inline QPointF globalPosition() const
0124 { Q_ASSERT(!m_points.isEmpty()); return m_points.first().globalPosition(); }
0125
0126 bool isBeginEvent() const override;
0127 bool isUpdateEvent() const override;
0128 bool isEndEvent() const override;
0129
0130 QObject *exclusivePointGrabber() const
0131 { return QPointerEvent::exclusiveGrabber(points().first()); }
0132 void setExclusivePointGrabber(QObject *exclusiveGrabber)
0133 { QPointerEvent::setExclusiveGrabber(points().first(), exclusiveGrabber); }
0134
0135 protected:
0136 friend class ::tst_QEvent;
0137 friend class QMutableSinglePointEvent;
0138 QSinglePointEvent(Type type, const QPointingDevice *dev, const QEventPoint &point,
0139 Qt::MouseButton button, Qt::MouseButtons buttons,
0140 Qt::KeyboardModifiers modifiers, Qt::MouseEventSource source);
0141 QSinglePointEvent(Type type, const QPointingDevice *dev, const QPointF &localPos,
0142 const QPointF &scenePos, const QPointF &globalPos,
0143 Qt::MouseButton button, Qt::MouseButtons buttons,
0144 Qt::KeyboardModifiers modifiers,
0145 Qt::MouseEventSource source = Qt::MouseEventNotSynthesized);
0146
0147 Qt::MouseButton m_button = Qt::NoButton;
0148 Qt::MouseButtons m_mouseState = Qt::NoButton;
0149 Qt::MouseEventSource m_source;
0150
0151
0152
0153
0154
0155
0156 quint16 m_reserved;
0157 quint16 m_reserved2 : 11;
0158
0159 quint16 m_doubleClick : 1;
0160
0161 quint16 m_phase : 3;
0162 quint16 m_invertedScrolling : 1;
0163 };
0164
0165 class Q_GUI_EXPORT QEnterEvent : public QSinglePointEvent
0166 {
0167 Q_DECL_EVENT_COMMON(QEnterEvent)
0168 public:
0169 QEnterEvent(const QPointF &localPos, const QPointF &scenePos, const QPointF &globalPos,
0170 const QPointingDevice *device = QPointingDevice::primaryPointingDevice());
0171
0172 #if QT_DEPRECATED_SINCE(6, 0)
0173 #ifndef QT_NO_INTEGER_EVENT_COORDINATES
0174 QT_DEPRECATED_VERSION_X_6_0("Use position()")
0175 inline QPoint pos() const { return position().toPoint(); }
0176 QT_DEPRECATED_VERSION_X_6_0("Use globalPosition()")
0177 inline QPoint globalPos() const { return globalPosition().toPoint(); }
0178 QT_DEPRECATED_VERSION_X_6_0("Use position()")
0179 inline int x() const { return qRound(position().x()); }
0180 QT_DEPRECATED_VERSION_X_6_0("Use position()")
0181 inline int y() const { return qRound(position().y()); }
0182 QT_DEPRECATED_VERSION_X_6_0("Use globalPosition()")
0183 inline int globalX() const { return qRound(globalPosition().x()); }
0184 QT_DEPRECATED_VERSION_X_6_0("Use globalPosition()")
0185 inline int globalY() const { return qRound(globalPosition().y()); }
0186 #endif
0187 QT_DEPRECATED_VERSION_X_6_0("Use position()")
0188 QPointF localPos() const { return position(); }
0189 QT_DEPRECATED_VERSION_X_6_0("Use scenePosition()")
0190 QPointF windowPos() const { return scenePosition(); }
0191 QT_DEPRECATED_VERSION_X_6_0("Use globalPosition()")
0192 QPointF screenPos() const { return globalPosition(); }
0193 #endif
0194 };
0195
0196 class Q_GUI_EXPORT QMouseEvent : public QSinglePointEvent
0197 {
0198 Q_DECL_EVENT_COMMON(QMouseEvent)
0199 public:
0200 #if QT_DEPRECATED_SINCE(6, 4)
0201 QT_DEPRECATED_VERSION_X_6_4("Use another constructor")
0202 QMouseEvent(Type type, const QPointF &localPos, Qt::MouseButton button,
0203 Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers,
0204 const QPointingDevice *device = QPointingDevice::primaryPointingDevice());
0205 #endif
0206 QMouseEvent(Type type, const QPointF &localPos, const QPointF &globalPos,
0207 Qt::MouseButton button, Qt::MouseButtons buttons,
0208 Qt::KeyboardModifiers modifiers,
0209 const QPointingDevice *device = QPointingDevice::primaryPointingDevice());
0210 QMouseEvent(Type type, const QPointF &localPos, const QPointF &scenePos, const QPointF &globalPos,
0211 Qt::MouseButton button, Qt::MouseButtons buttons,
0212 Qt::KeyboardModifiers modifiers,
0213 const QPointingDevice *device = QPointingDevice::primaryPointingDevice());
0214 QMouseEvent(Type type, const QPointF &localPos, const QPointF &scenePos, const QPointF &globalPos,
0215 Qt::MouseButton button, Qt::MouseButtons buttons,
0216 Qt::KeyboardModifiers modifiers, Qt::MouseEventSource source,
0217 const QPointingDevice *device = QPointingDevice::primaryPointingDevice());
0218
0219 #ifndef QT_NO_INTEGER_EVENT_COORDINATES
0220 inline QPoint pos() const { return position().toPoint(); }
0221 #endif
0222 #if QT_DEPRECATED_SINCE(6, 0)
0223 #ifndef QT_NO_INTEGER_EVENT_COORDINATES
0224 QT_DEPRECATED_VERSION_X_6_0("Use globalPosition()")
0225 inline QPoint globalPos() const { return globalPosition().toPoint(); }
0226 QT_DEPRECATED_VERSION_X_6_0("Use position()")
0227 inline int x() const { return qRound(position().x()); }
0228 QT_DEPRECATED_VERSION_X_6_0("Use position()")
0229 inline int y() const { return qRound(position().y()); }
0230 QT_DEPRECATED_VERSION_X_6_0("Use globalPosition()")
0231 inline int globalX() const { return qRound(globalPosition().x()); }
0232 QT_DEPRECATED_VERSION_X_6_0("Use globalPosition()")
0233 inline int globalY() const { return qRound(globalPosition().y()); }
0234 #endif
0235 QT_DEPRECATED_VERSION_X_6_0("Use position()")
0236 QPointF localPos() const { return position(); }
0237 QT_DEPRECATED_VERSION_X_6_0("Use scenePosition()")
0238 QPointF windowPos() const { return scenePosition(); }
0239 QT_DEPRECATED_VERSION_X_6_0("Use globalPosition()")
0240 QPointF screenPos() const { return globalPosition(); }
0241 #endif
0242 Qt::MouseEventSource source() const;
0243 Qt::MouseEventFlags flags() const;
0244 };
0245
0246 class Q_GUI_EXPORT QHoverEvent : public QSinglePointEvent
0247 {
0248 Q_DECL_EVENT_COMMON(QHoverEvent)
0249 public:
0250 QHoverEvent(Type type, const QPointF &scenePos, const QPointF &globalPos, const QPointF &oldPos,
0251 Qt::KeyboardModifiers modifiers = Qt::NoModifier,
0252 const QPointingDevice *device = QPointingDevice::primaryPointingDevice());
0253 #if QT_DEPRECATED_SINCE(6, 3)
0254 QT_DEPRECATED_VERSION_X_6_3("Use the other constructor")
0255 QHoverEvent(Type type, const QPointF &pos, const QPointF &oldPos,
0256 Qt::KeyboardModifiers modifiers = Qt::NoModifier,
0257 const QPointingDevice *device = QPointingDevice::primaryPointingDevice());
0258 #endif
0259
0260 #if QT_DEPRECATED_SINCE(6, 0)
0261 #ifndef QT_NO_INTEGER_EVENT_COORDINATES
0262 QT_DEPRECATED_VERSION_X_6_0("Use position()")
0263 inline QPoint pos() const { return position().toPoint(); }
0264 #endif
0265
0266 QT_DEPRECATED_VERSION_X_6_0("Use position()")
0267 inline QPointF posF() const { return position(); }
0268 #endif
0269
0270 bool isUpdateEvent() const override { return true; }
0271
0272
0273 inline QPoint oldPos() const { return m_oldPos.toPoint(); }
0274 inline QPointF oldPosF() const { return m_oldPos; }
0275
0276 protected:
0277 QPointF m_oldPos;
0278 };
0279
0280 #if QT_CONFIG(wheelevent)
0281 class Q_GUI_EXPORT QWheelEvent : public QSinglePointEvent
0282 {
0283 Q_GADGET
0284 Q_PROPERTY(const QPointingDevice *device READ pointingDevice)
0285 Q_PROPERTY(QPoint pixelDelta READ pixelDelta)
0286 Q_PROPERTY(QPoint angleDelta READ angleDelta)
0287 Q_PROPERTY(Qt::ScrollPhase phase READ phase)
0288 Q_PROPERTY(bool inverted READ inverted)
0289
0290 Q_DECL_EVENT_COMMON(QWheelEvent)
0291 public:
0292 enum { DefaultDeltasPerStep = 120 };
0293
0294 QWheelEvent(const QPointF &pos, const QPointF &globalPos, QPoint pixelDelta, QPoint angleDelta,
0295 Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::ScrollPhase phase,
0296 bool inverted, Qt::MouseEventSource source = Qt::MouseEventNotSynthesized,
0297 const QPointingDevice *device = QPointingDevice::primaryPointingDevice());
0298
0299 inline QPoint pixelDelta() const { return m_pixelDelta; }
0300 inline QPoint angleDelta() const { return m_angleDelta; }
0301
0302 inline Qt::ScrollPhase phase() const { return Qt::ScrollPhase(m_phase); }
0303 inline bool inverted() const { return m_invertedScrolling; }
0304 inline bool isInverted() const { return m_invertedScrolling; }
0305 inline bool hasPixelDelta() const { return !m_pixelDelta.isNull(); }
0306
0307 bool isBeginEvent() const override;
0308 bool isUpdateEvent() const override;
0309 bool isEndEvent() const override;
0310 Qt::MouseEventSource source() const { return Qt::MouseEventSource(m_source); }
0311
0312 protected:
0313 QPoint m_pixelDelta;
0314 QPoint m_angleDelta;
0315 };
0316 #endif
0317
0318 #if QT_CONFIG(tabletevent)
0319 class Q_GUI_EXPORT QTabletEvent : public QSinglePointEvent
0320 {
0321 Q_DECL_EVENT_COMMON(QTabletEvent)
0322 public:
0323 QTabletEvent(Type t, const QPointingDevice *device,
0324 const QPointF &pos, const QPointF &globalPos,
0325 qreal pressure, float xTilt, float yTilt,
0326 float tangentialPressure, qreal rotation, float z,
0327 Qt::KeyboardModifiers keyState,
0328 Qt::MouseButton button, Qt::MouseButtons buttons);
0329
0330 #if QT_DEPRECATED_SINCE(6, 0)
0331 QT_DEPRECATED_VERSION_X_6_0("Use position()")
0332 inline QPoint pos() const { return position().toPoint(); }
0333 QT_DEPRECATED_VERSION_X_6_0("Use globalPosition()")
0334 inline QPoint globalPos() const { return globalPosition().toPoint(); }
0335
0336 QT_DEPRECATED_VERSION_X_6_0("Use position()")
0337 inline const QPointF posF() const { return position(); }
0338 QT_DEPRECATED_VERSION_X_6_0("Use globalPosition()")
0339 inline const QPointF globalPosF() const { return globalPosition(); }
0340 QT_DEPRECATED_VERSION_X_6_0("Use position().x()")
0341 inline int x() const { return qRound(position().x()); }
0342 QT_DEPRECATED_VERSION_X_6_0("Use position().y()")
0343 inline int y() const { return qRound(position().y()); }
0344 QT_DEPRECATED_VERSION_X_6_0("Use globalPosition().x()")
0345 inline int globalX() const { return qRound(globalPosition().x()); }
0346 QT_DEPRECATED_VERSION_X_6_0("Use globalPosition().y()")
0347 inline int globalY() const { return qRound(globalPosition().y()); }
0348 QT_DEPRECATED_VERSION_X_6_0("use globalPosition().x()")
0349 inline qreal hiResGlobalX() const { return globalPosition().x(); }
0350 QT_DEPRECATED_VERSION_X_6_0("use globalPosition().y()")
0351 inline qreal hiResGlobalY() const { return globalPosition().y(); }
0352 QT_DEPRECATED_VERSION_X_6_0("use pointingDevice().uniqueId()")
0353 inline qint64 uniqueId() const { return pointingDevice() ? pointingDevice()->uniqueId().numericId() : -1; }
0354 #endif
0355 inline qreal pressure() const { Q_ASSERT(!points().isEmpty()); return points().first().pressure(); }
0356 inline qreal rotation() const { Q_ASSERT(!points().isEmpty()); return points().first().rotation(); }
0357 inline qreal z() const { return m_z; }
0358 inline qreal tangentialPressure() const { return m_tangential; }
0359 inline qreal xTilt() const { return m_xTilt; }
0360 inline qreal yTilt() const { return m_yTilt; }
0361
0362 protected:
0363 float m_tangential;
0364 float m_xTilt;
0365 float m_yTilt;
0366 float m_z;
0367 };
0368 #endif
0369
0370 #if QT_CONFIG(gestures)
0371 class Q_GUI_EXPORT QNativeGestureEvent : public QSinglePointEvent
0372 {
0373 Q_DECL_EVENT_COMMON(QNativeGestureEvent)
0374 public:
0375 #if QT_DEPRECATED_SINCE(6, 2)
0376 QT_DEPRECATED_VERSION_X_6_2("Use the other constructor")
0377 QNativeGestureEvent(Qt::NativeGestureType type, const QPointingDevice *dev, const QPointF &localPos, const QPointF &scenePos,
0378 const QPointF &globalPos, qreal value, quint64 sequenceId, quint64 intArgument);
0379 #endif
0380 QNativeGestureEvent(Qt::NativeGestureType type, const QPointingDevice *dev, int fingerCount,
0381 const QPointF &localPos, const QPointF &scenePos, const QPointF &globalPos,
0382 qreal value, const QPointF &delta, quint64 sequenceId = UINT64_MAX);
0383
0384 Qt::NativeGestureType gestureType() const { return m_gestureType; }
0385 int fingerCount() const { return m_fingerCount; }
0386 qreal value() const { return m_realValue; }
0387 QPointF delta() const {
0388 #if QT_VERSION < QT_VERSION_CHECK(7, 0, 0)
0389 return m_delta.toPointF();
0390 #else
0391 return m_delta;
0392 #endif
0393 }
0394
0395 #if QT_DEPRECATED_SINCE(6, 0)
0396 #ifndef QT_NO_INTEGER_EVENT_COORDINATES
0397 QT_DEPRECATED_VERSION_X_6_0("Use position().toPoint()")
0398 inline const QPoint pos() const { return position().toPoint(); }
0399 QT_DEPRECATED_VERSION_X_6_0("Use globalPosition().toPoint()")
0400 inline const QPoint globalPos() const { return globalPosition().toPoint(); }
0401 #endif
0402 QT_DEPRECATED_VERSION_X_6_0("Use position()")
0403 QPointF localPos() const { return position(); }
0404 QT_DEPRECATED_VERSION_X_6_0("Use scenePosition()")
0405 QPointF windowPos() const { return scenePosition(); }
0406 QT_DEPRECATED_VERSION_X_6_0("Use globalPosition()")
0407 QPointF screenPos() const { return globalPosition(); }
0408 #endif
0409
0410 protected:
0411 quint64 m_sequenceId;
0412 #if QT_VERSION < QT_VERSION_CHECK(7, 0, 0)
0413 QVector2D m_delta;
0414 #else
0415 QPointF m_delta;
0416 #endif
0417 qreal m_realValue;
0418 Qt::NativeGestureType m_gestureType;
0419 quint32 m_fingerCount : 4;
0420 quint32 m_reserved : 28;
0421 };
0422 #endif
0423
0424 class Q_GUI_EXPORT QKeyEvent : public QInputEvent
0425 {
0426 Q_DECL_EVENT_COMMON(QKeyEvent)
0427 public:
0428 QKeyEvent(Type type, int key, Qt::KeyboardModifiers modifiers, const QString& text = QString(),
0429 bool autorep = false, quint16 count = 1);
0430 QKeyEvent(Type type, int key, Qt::KeyboardModifiers modifiers,
0431 quint32 nativeScanCode, quint32 nativeVirtualKey, quint32 nativeModifiers,
0432 const QString &text = QString(), bool autorep = false, quint16 count = 1,
0433 const QInputDevice *device = QInputDevice::primaryKeyboard());
0434
0435 int key() const { return m_key; }
0436 #if QT_CONFIG(shortcut)
0437 bool matches(QKeySequence::StandardKey key) const;
0438 #endif
0439 Qt::KeyboardModifiers modifiers() const;
0440 QKeyCombination keyCombination() const
0441 {
0442 return QKeyCombination(modifiers(), Qt::Key(m_key));
0443 }
0444 inline QString text() const { return m_text; }
0445 inline bool isAutoRepeat() const { return m_autoRepeat; }
0446 inline int count() const { return int(m_count); }
0447
0448 inline quint32 nativeScanCode() const { return m_scanCode; }
0449 inline quint32 nativeVirtualKey() const { return m_virtualKey; }
0450 inline quint32 nativeModifiers() const { return m_nativeModifiers; }
0451
0452 #if QT_CONFIG(shortcut)
0453 friend inline bool operator==(QKeyEvent *e, QKeySequence::StandardKey key)
0454 { return (e ? e->matches(key) : false); }
0455 friend inline bool operator==(QKeySequence::StandardKey key, QKeyEvent *e)
0456 { return (e ? e->matches(key) : false); }
0457 #endif
0458
0459 protected:
0460 QString m_text;
0461 int m_key;
0462 quint32 m_scanCode;
0463 quint32 m_virtualKey;
0464 quint32 m_nativeModifiers;
0465 quint16 m_count : 15;
0466 quint16 m_autoRepeat : 1;
0467 };
0468
0469
0470 class Q_GUI_EXPORT QFocusEvent : public QEvent
0471 {
0472 Q_DECL_EVENT_COMMON(QFocusEvent)
0473 public:
0474 explicit QFocusEvent(Type type, Qt::FocusReason reason=Qt::OtherFocusReason);
0475
0476 inline bool gotFocus() const { return type() == FocusIn; }
0477 inline bool lostFocus() const { return type() == FocusOut; }
0478
0479 Qt::FocusReason reason() const;
0480
0481 private:
0482 Qt::FocusReason m_reason;
0483 };
0484
0485
0486 class Q_GUI_EXPORT QPaintEvent : public QEvent
0487 {
0488 Q_DECL_EVENT_COMMON(QPaintEvent)
0489 public:
0490 explicit QPaintEvent(const QRegion& paintRegion);
0491 explicit QPaintEvent(const QRect &paintRect);
0492
0493 inline const QRect &rect() const { return m_rect; }
0494 inline const QRegion ®ion() const { return m_region; }
0495
0496 protected:
0497 QRect m_rect;
0498 QRegion m_region;
0499 bool m_erased;
0500 };
0501
0502 class Q_GUI_EXPORT QMoveEvent : public QEvent
0503 {
0504 Q_DECL_EVENT_COMMON(QMoveEvent)
0505 public:
0506 QMoveEvent(const QPoint &pos, const QPoint &oldPos);
0507
0508 inline const QPoint &pos() const { return m_pos; }
0509 inline const QPoint &oldPos() const { return m_oldPos;}
0510 protected:
0511 QPoint m_pos, m_oldPos;
0512 friend class QApplication;
0513 };
0514
0515 class Q_GUI_EXPORT QExposeEvent : public QEvent
0516 {
0517 Q_DECL_EVENT_COMMON(QExposeEvent)
0518 public:
0519 explicit QExposeEvent(const QRegion &m_region);
0520
0521 #if QT_DEPRECATED_SINCE(6, 0)
0522 QT_DEPRECATED_VERSION_X_6_0("Handle QPaintEvent instead")
0523 inline const QRegion ®ion() const { return m_region; }
0524 #endif
0525
0526 protected:
0527 QRegion m_region;
0528 friend class QWidgetWindow;
0529 };
0530
0531 class Q_GUI_EXPORT QPlatformSurfaceEvent : public QEvent
0532 {
0533 Q_DECL_EVENT_COMMON(QPlatformSurfaceEvent)
0534 public:
0535 enum SurfaceEventType {
0536 SurfaceCreated,
0537 SurfaceAboutToBeDestroyed
0538 };
0539
0540 explicit QPlatformSurfaceEvent(SurfaceEventType surfaceEventType);
0541
0542 inline SurfaceEventType surfaceEventType() const { return m_surfaceEventType; }
0543
0544 protected:
0545 SurfaceEventType m_surfaceEventType;
0546 };
0547
0548 class Q_GUI_EXPORT QResizeEvent : public QEvent
0549 {
0550 Q_DECL_EVENT_COMMON(QResizeEvent)
0551 public:
0552 QResizeEvent(const QSize &size, const QSize &oldSize);
0553
0554 inline const QSize &size() const { return m_size; }
0555 inline const QSize &oldSize()const { return m_oldSize;}
0556 protected:
0557 QSize m_size, m_oldSize;
0558 friend class QApplication;
0559 };
0560
0561
0562 class Q_GUI_EXPORT QCloseEvent : public QEvent
0563 {
0564 Q_DECL_EVENT_COMMON(QCloseEvent)
0565 public:
0566 QCloseEvent();
0567 };
0568
0569
0570 class Q_GUI_EXPORT QIconDragEvent : public QEvent
0571 {
0572 Q_DECL_EVENT_COMMON(QIconDragEvent)
0573 public:
0574 QIconDragEvent();
0575 };
0576
0577
0578 class Q_GUI_EXPORT QShowEvent : public QEvent
0579 {
0580 Q_DECL_EVENT_COMMON(QShowEvent)
0581 public:
0582 QShowEvent();
0583 };
0584
0585
0586 class Q_GUI_EXPORT QHideEvent : public QEvent
0587 {
0588 Q_DECL_EVENT_COMMON(QHideEvent)
0589 public:
0590 QHideEvent();
0591 };
0592
0593 #ifndef QT_NO_CONTEXTMENU
0594 class Q_GUI_EXPORT QContextMenuEvent : public QInputEvent
0595 {
0596 Q_DECL_EVENT_COMMON(QContextMenuEvent)
0597 public:
0598 enum Reason { Mouse, Keyboard, Other };
0599
0600 QContextMenuEvent(Reason reason, const QPoint &pos, const QPoint &globalPos,
0601 Qt::KeyboardModifiers modifiers = Qt::NoModifier);
0602 #if QT_DEPRECATED_SINCE(6, 4)
0603 QT_DEPRECATED_VERSION_X_6_4("Use the other constructor")
0604 QContextMenuEvent(Reason reason, const QPoint &pos);
0605 #endif
0606
0607 inline int x() const { return m_pos.x(); }
0608 inline int y() const { return m_pos.y(); }
0609 inline int globalX() const { return m_globalPos.x(); }
0610 inline int globalY() const { return m_globalPos.y(); }
0611
0612 inline const QPoint& pos() const { return m_pos; }
0613 inline const QPoint& globalPos() const { return m_globalPos; }
0614
0615 inline Reason reason() const { return Reason(m_reason); }
0616
0617 protected:
0618 QPoint m_pos;
0619 QPoint m_globalPos;
0620 uint m_reason : 8;
0621 };
0622 #endif
0623
0624 #ifndef QT_NO_INPUTMETHOD
0625 class Q_GUI_EXPORT QInputMethodEvent : public QEvent
0626 {
0627 Q_DECL_EVENT_COMMON(QInputMethodEvent)
0628 public:
0629 enum AttributeType {
0630 TextFormat,
0631 Cursor,
0632 Language,
0633 Ruby,
0634 Selection
0635 };
0636 class Attribute {
0637 public:
0638 Attribute(AttributeType typ, int s, int l, QVariant val) : type(typ), start(s), length(l), value(std::move(val)) {}
0639 Attribute(AttributeType typ, int s, int l) : type(typ), start(s), length(l), value() {}
0640
0641 AttributeType type;
0642 int start;
0643 int length;
0644 QVariant value;
0645 };
0646 QInputMethodEvent();
0647 QInputMethodEvent(const QString &preeditText, const QList<Attribute> &attributes);
0648
0649 void setCommitString(const QString &commitString, int replaceFrom = 0, int replaceLength = 0);
0650 inline const QList<Attribute> &attributes() const { return m_attributes; }
0651 inline const QString &preeditString() const { return m_preedit; }
0652
0653 inline const QString &commitString() const { return m_commit; }
0654 inline int replacementStart() const { return m_replacementStart; }
0655 inline int replacementLength() const { return m_replacementLength; }
0656
0657 inline friend bool operator==(const QInputMethodEvent::Attribute &lhs,
0658 const QInputMethodEvent::Attribute &rhs)
0659 {
0660 return lhs.type == rhs.type && lhs.start == rhs.start
0661 && lhs.length == rhs.length && lhs.value == rhs.value;
0662 }
0663
0664 inline friend bool operator!=(const QInputMethodEvent::Attribute &lhs,
0665 const QInputMethodEvent::Attribute &rhs)
0666 {
0667 return !(lhs == rhs);
0668 }
0669
0670 private:
0671 QString m_preedit;
0672 QString m_commit;
0673 QList<Attribute> m_attributes;
0674 int m_replacementStart;
0675 int m_replacementLength;
0676 };
0677 Q_DECLARE_TYPEINFO(QInputMethodEvent::Attribute, Q_RELOCATABLE_TYPE);
0678
0679 class Q_GUI_EXPORT QInputMethodQueryEvent : public QEvent
0680 {
0681 Q_DECL_EVENT_COMMON(QInputMethodQueryEvent)
0682 public:
0683 explicit QInputMethodQueryEvent(Qt::InputMethodQueries queries);
0684
0685 Qt::InputMethodQueries queries() const { return m_queries; }
0686
0687 void setValue(Qt::InputMethodQuery query, const QVariant &value);
0688 QVariant value(Qt::InputMethodQuery query) const;
0689 private:
0690 Qt::InputMethodQueries m_queries;
0691 struct QueryPair {
0692 Qt::InputMethodQuery query;
0693 QVariant value;
0694 };
0695 friend QTypeInfo<QueryPair>;
0696 QList<QueryPair> m_values;
0697 };
0698 Q_DECLARE_TYPEINFO(QInputMethodQueryEvent::QueryPair, Q_RELOCATABLE_TYPE);
0699
0700 #endif
0701
0702 #if QT_CONFIG(draganddrop)
0703
0704 class QMimeData;
0705
0706 class Q_GUI_EXPORT QDropEvent : public QEvent
0707 {
0708 Q_DECL_EVENT_COMMON(QDropEvent)
0709 public:
0710 QDropEvent(const QPointF& pos, Qt::DropActions actions, const QMimeData *data,
0711 Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Type type = Drop);
0712
0713 #if QT_DEPRECATED_SINCE(6, 0)
0714 QT_DEPRECATED_VERSION_X_6_0("Use position().toPoint()")
0715 inline QPoint pos() const { return position().toPoint(); }
0716 QT_DEPRECATED_VERSION_X_6_0("Use position()")
0717 inline QPointF posF() const { return position(); }
0718 QT_DEPRECATED_VERSION_X_6_0("Use buttons()")
0719 inline Qt::MouseButtons mouseButtons() const { return buttons(); }
0720 QT_DEPRECATED_VERSION_X_6_0("Use modifiers()")
0721 inline Qt::KeyboardModifiers keyboardModifiers() const { return modifiers(); }
0722 #endif
0723
0724 QPointF position() const { return m_pos; }
0725 inline Qt::MouseButtons buttons() const { return m_mouseState; }
0726 inline Qt::KeyboardModifiers modifiers() const { return m_modState; }
0727
0728 inline Qt::DropActions possibleActions() const { return m_actions; }
0729 inline Qt::DropAction proposedAction() const { return m_defaultAction; }
0730 inline void acceptProposedAction() { m_dropAction = m_defaultAction; accept(); }
0731
0732 inline Qt::DropAction dropAction() const { return m_dropAction; }
0733 void setDropAction(Qt::DropAction action);
0734
0735 QObject* source() const;
0736 inline const QMimeData *mimeData() const { return m_data; }
0737
0738 protected:
0739 friend class QApplication;
0740 QPointF m_pos;
0741 Qt::MouseButtons m_mouseState;
0742 Qt::KeyboardModifiers m_modState;
0743 Qt::DropActions m_actions;
0744 Qt::DropAction m_dropAction;
0745 Qt::DropAction m_defaultAction;
0746 const QMimeData *m_data;
0747 };
0748
0749
0750 class Q_GUI_EXPORT QDragMoveEvent : public QDropEvent
0751 {
0752 Q_DECL_EVENT_COMMON(QDragMoveEvent)
0753 public:
0754 QDragMoveEvent(const QPoint &pos, Qt::DropActions actions, const QMimeData *data,
0755 Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Type type = DragMove);
0756
0757 inline QRect answerRect() const { return m_rect; }
0758
0759 inline void accept() { QDropEvent::accept(); }
0760 inline void ignore() { QDropEvent::ignore(); }
0761
0762 inline void accept(const QRect & r) { accept(); m_rect = r; }
0763 inline void ignore(const QRect & r) { ignore(); m_rect = r; }
0764
0765 protected:
0766 QRect m_rect;
0767 };
0768
0769
0770 class Q_GUI_EXPORT QDragEnterEvent : public QDragMoveEvent
0771 {
0772 Q_DECL_EVENT_COMMON(QDragEnterEvent)
0773 public:
0774 QDragEnterEvent(const QPoint &pos, Qt::DropActions actions, const QMimeData *data,
0775 Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers);
0776 };
0777
0778
0779 class Q_GUI_EXPORT QDragLeaveEvent : public QEvent
0780 {
0781 Q_DECL_EVENT_COMMON(QDragLeaveEvent)
0782 public:
0783 QDragLeaveEvent();
0784 };
0785 #endif
0786
0787
0788 class Q_GUI_EXPORT QHelpEvent : public QEvent
0789 {
0790 Q_DECL_EVENT_COMMON(QHelpEvent)
0791 public:
0792 QHelpEvent(Type type, const QPoint &pos, const QPoint &globalPos);
0793
0794 inline int x() const { return m_pos.x(); }
0795 inline int y() const { return m_pos.y(); }
0796 inline int globalX() const { return m_globalPos.x(); }
0797 inline int globalY() const { return m_globalPos.y(); }
0798
0799 inline const QPoint& pos() const { return m_pos; }
0800 inline const QPoint& globalPos() const { return m_globalPos; }
0801
0802 private:
0803 QPoint m_pos;
0804 QPoint m_globalPos;
0805 };
0806
0807 #ifndef QT_NO_STATUSTIP
0808 class Q_GUI_EXPORT QStatusTipEvent : public QEvent
0809 {
0810 Q_DECL_EVENT_COMMON(QStatusTipEvent)
0811 public:
0812 explicit QStatusTipEvent(const QString &tip);
0813
0814 inline QString tip() const { return m_tip; }
0815 private:
0816 QString m_tip;
0817 };
0818 #endif
0819
0820 #if QT_CONFIG(whatsthis)
0821 class Q_GUI_EXPORT QWhatsThisClickedEvent : public QEvent
0822 {
0823 Q_DECL_EVENT_COMMON(QWhatsThisClickedEvent)
0824 public:
0825 explicit QWhatsThisClickedEvent(const QString &href);
0826
0827 inline QString href() const { return m_href; }
0828 private:
0829 QString m_href;
0830 };
0831 #endif
0832
0833 #if QT_CONFIG(action)
0834 class Q_GUI_EXPORT QActionEvent : public QEvent
0835 {
0836 Q_DECL_EVENT_COMMON(QActionEvent)
0837 public:
0838 QActionEvent(int type, QAction *action, QAction *before = nullptr);
0839
0840 inline QAction *action() const { return m_action; }
0841 inline QAction *before() const { return m_before; }
0842 private:
0843 QAction *m_action;
0844 QAction *m_before;
0845 };
0846 #endif
0847
0848 class Q_GUI_EXPORT QFileOpenEvent : public QEvent
0849 {
0850 Q_DECL_EVENT_COMMON(QFileOpenEvent)
0851 public:
0852 explicit QFileOpenEvent(const QString &file);
0853 explicit QFileOpenEvent(const QUrl &url);
0854
0855 inline QString file() const { return m_file; }
0856 QUrl url() const { return m_url; }
0857 #if QT_DEPRECATED_SINCE(6, 6)
0858 QT_DEPRECATED_VERSION_X_6_6("Interpret the string returned by file()")
0859 bool openFile(QFile &file, QIODevice::OpenMode flags) const;
0860 #endif
0861 private:
0862 QString m_file;
0863 QUrl m_url;
0864 };
0865
0866 #ifndef QT_NO_TOOLBAR
0867 class Q_GUI_EXPORT QToolBarChangeEvent : public QEvent
0868 {
0869 Q_DECL_EVENT_COMMON(QToolBarChangeEvent)
0870 public:
0871 explicit QToolBarChangeEvent(bool t);
0872
0873 inline bool toggle() const { return m_toggle; }
0874 private:
0875 bool m_toggle;
0876 };
0877 #endif
0878
0879 #if QT_CONFIG(shortcut)
0880 class Q_GUI_EXPORT QShortcutEvent : public QEvent
0881 {
0882 Q_DECL_EVENT_COMMON(QShortcutEvent)
0883 public:
0884
0885 QShortcutEvent(const QKeySequence &key, int id, bool ambiguous = false);
0886 QShortcutEvent(const QKeySequence &key, const QShortcut *shortcut = nullptr, bool ambiguous = false);
0887
0888 inline const QKeySequence &key() const { return m_sequence; }
0889
0890 inline int shortcutId() const { return m_shortcutId; }
0891 inline bool isAmbiguous() const { return m_ambiguous; }
0892 protected:
0893 QKeySequence m_sequence;
0894 int m_shortcutId;
0895 bool m_ambiguous;
0896 };
0897 #endif
0898
0899 class Q_GUI_EXPORT QWindowStateChangeEvent: public QEvent
0900 {
0901 Q_DECL_EVENT_COMMON(QWindowStateChangeEvent)
0902 public:
0903 explicit QWindowStateChangeEvent(Qt::WindowStates oldState, bool isOverride = false);
0904
0905 inline Qt::WindowStates oldState() const { return m_oldStates; }
0906 bool isOverride() const;
0907
0908 private:
0909 Qt::WindowStates m_oldStates;
0910 bool m_override;
0911 };
0912
0913 #ifndef QT_NO_DEBUG_STREAM
0914
0915 Q_GUI_EXPORT QDebug operator<<(QDebug, const QEvent *);
0916 #endif
0917
0918 class Q_GUI_EXPORT QTouchEvent : public QPointerEvent
0919 {
0920 Q_DECL_EVENT_COMMON(QTouchEvent)
0921 public:
0922 using TouchPoint = QEventPoint;
0923
0924 explicit QTouchEvent(QEvent::Type eventType,
0925 const QPointingDevice *device = nullptr,
0926 Qt::KeyboardModifiers modifiers = Qt::NoModifier,
0927 const QList<QEventPoint> &touchPoints = {});
0928 #if QT_DEPRECATED_SINCE(6, 0)
0929 QT_DEPRECATED_VERSION_X_6_0("Use another constructor")
0930 explicit QTouchEvent(QEvent::Type eventType,
0931 const QPointingDevice *device,
0932 Qt::KeyboardModifiers modifiers,
0933 QEventPoint::States touchPointStates,
0934 const QList<QEventPoint> &touchPoints = {});
0935 #endif
0936
0937 inline QObject *target() const { return m_target; }
0938 inline QEventPoint::States touchPointStates() const { return m_touchPointStates; }
0939 #if QT_DEPRECATED_SINCE(6, 0)
0940 QT_DEPRECATED_VERSION_X_6_0("Use points()")
0941 const QList<QEventPoint> &touchPoints() const { return points(); }
0942 #endif
0943 bool isBeginEvent() const override;
0944 bool isUpdateEvent() const override;
0945 bool isEndEvent() const override;
0946
0947 protected:
0948 friend class QMutableTouchEvent;
0949 QObject *m_target = nullptr;
0950 QEventPoint::States m_touchPointStates = QEventPoint::State::Unknown;
0951 quint32 m_reserved : 24;
0952 };
0953
0954 class Q_GUI_EXPORT QScrollPrepareEvent : public QEvent
0955 {
0956 Q_DECL_EVENT_COMMON(QScrollPrepareEvent)
0957 public:
0958 explicit QScrollPrepareEvent(const QPointF &startPos);
0959
0960 QPointF startPos() const { return m_startPos; }
0961
0962 QSizeF viewportSize() const { return m_viewportSize; }
0963 QRectF contentPosRange() const { return m_contentPosRange; }
0964 QPointF contentPos() const { return m_contentPos; }
0965
0966 void setViewportSize(const QSizeF &size);
0967 void setContentPosRange(const QRectF &rect);
0968 void setContentPos(const QPointF &pos);
0969
0970 private:
0971 QRectF m_contentPosRange;
0972 QSizeF m_viewportSize;
0973 QPointF m_startPos;
0974 QPointF m_contentPos;
0975 };
0976
0977
0978 class Q_GUI_EXPORT QScrollEvent : public QEvent
0979 {
0980 Q_DECL_EVENT_COMMON(QScrollEvent)
0981 public:
0982 enum ScrollState
0983 {
0984 ScrollStarted,
0985 ScrollUpdated,
0986 ScrollFinished
0987 };
0988
0989 QScrollEvent(const QPointF &contentPos, const QPointF &overshoot, ScrollState scrollState);
0990
0991 QPointF contentPos() const { return m_contentPos; }
0992 QPointF overshootDistance() const { return m_overshoot; }
0993 ScrollState scrollState() const { return m_state; }
0994
0995 private:
0996 QPointF m_contentPos;
0997 QPointF m_overshoot;
0998 QScrollEvent::ScrollState m_state;
0999 };
1000
1001 class Q_GUI_EXPORT QScreenOrientationChangeEvent : public QEvent
1002 {
1003 Q_DECL_EVENT_COMMON(QScreenOrientationChangeEvent)
1004 public:
1005 QScreenOrientationChangeEvent(QScreen *screen, Qt::ScreenOrientation orientation);
1006
1007 QScreen *screen() const { return m_screen; }
1008 Qt::ScreenOrientation orientation() const { return m_orientation; }
1009
1010 private:
1011 QScreen *m_screen;
1012 Qt::ScreenOrientation m_orientation;
1013 };
1014
1015 class Q_GUI_EXPORT QApplicationStateChangeEvent : public QEvent
1016 {
1017 Q_DECL_EVENT_COMMON(QApplicationStateChangeEvent)
1018 public:
1019 explicit QApplicationStateChangeEvent(Qt::ApplicationState state);
1020
1021 Qt::ApplicationState applicationState() const { return m_applicationState; }
1022
1023 private:
1024 Qt::ApplicationState m_applicationState;
1025 };
1026
1027 class Q_GUI_EXPORT QChildWindowEvent : public QEvent
1028 {
1029 Q_DECL_EVENT_COMMON(QChildWindowEvent)
1030 public:
1031 explicit QChildWindowEvent(Type type, QWindow *childWindow);
1032 QWindow *child() const { return c; }
1033
1034 private:
1035 QWindow *c;
1036 };
1037
1038 QT_END_NAMESPACE
1039
1040 #endif