/**************************************************************************** ** ** Copyright (C) 2015 The Qt Company Ltd. ** Contact: http://www.qt.io/licensing/ ** ** This file is part of the QtGui module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL21$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see http://www.qt.io/terms-conditions. For further ** information use the contact form at http://www.qt.io/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 or version 3 as published by the Free ** Software Foundation and appearing in the file LICENSE.LGPLv21 and ** LICENSE.LGPLv3 included in the packaging of this file. Please review the ** following information to ensure the GNU Lesser General Public License ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** As a special exception, The Qt Company gives you certain additional ** rights. These rights are described in The Qt Company LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef QEVENT_H #define QEVENT_H #include #include #include #include #include #include #include #include // ### Qt 6: Remove #include #include // ### Qt 6: Remove #include #include // ### Qt 6: Replace by and forward declare QFile #include #include // ### Qt 6: Replace by forward declaration QT_BEGIN_NAMESPACE class QAction; #ifndef QT_NO_GESTURES class QGesture; #endif class QScreen; class Q_GUI_EXPORT QInputEvent : public QEvent { public: explicit QInputEvent(Type type, Qt::KeyboardModifiers modifiers = Qt::NoModifier); ~QInputEvent(); inline Qt::KeyboardModifiers modifiers() const { return modState; } inline void setModifiers(Qt::KeyboardModifiers amodifiers) { modState = amodifiers; } inline ulong timestamp() const { return ts; } inline void setTimestamp(ulong atimestamp) { ts = atimestamp; } protected: Qt::KeyboardModifiers modState; ulong ts; }; class Q_GUI_EXPORT QEnterEvent : public QEvent { public: QEnterEvent(const QPointF &localPos, const QPointF &windowPos, const QPointF &screenPos); ~QEnterEvent(); #ifndef QT_NO_INTEGER_EVENT_COORDINATES inline QPoint pos() const { return l.toPoint(); } inline QPoint globalPos() const { return s.toPoint(); } inline int x() const { return qRound(l.x()); } inline int y() const { return qRound(l.y()); } inline int globalX() const { return qRound(s.x()); } inline int globalY() const { return qRound(s.y()); } #endif const QPointF &localPos() const { return l; } const QPointF &windowPos() const { return w; } const QPointF &screenPos() const { return s; } protected: QPointF l, w, s; }; class Q_GUI_EXPORT QMouseEvent : public QInputEvent { public: QMouseEvent(Type type, const QPointF &localPos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers); QMouseEvent(Type type, const QPointF &localPos, const QPointF &screenPos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers); QMouseEvent(Type type, const QPointF &localPos, const QPointF &windowPos, const QPointF &screenPos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers); QMouseEvent(Type type, const QPointF &localPos, const QPointF &windowPos, const QPointF &screenPos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::MouseEventSource source); ~QMouseEvent(); #ifndef QT_NO_INTEGER_EVENT_COORDINATES inline QPoint pos() const { return l.toPoint(); } inline QPoint globalPos() const { return s.toPoint(); } inline int x() const { return qRound(l.x()); } inline int y() const { return qRound(l.y()); } inline int globalX() const { return qRound(s.x()); } inline int globalY() const { return qRound(s.y()); } #endif const QPointF &localPos() const { return l; } const QPointF &windowPos() const { return w; } const QPointF &screenPos() const { return s; } inline Qt::MouseButton button() const { return b; } inline Qt::MouseButtons buttons() const { return mouseState; } #if QT_DEPRECATED_SINCE(5, 0) QT_DEPRECATED inline QPointF posF() const { return l; } #endif Qt::MouseEventSource source() const; Qt::MouseEventFlags flags() const; protected: QPointF l, w, s; Qt::MouseButton b; Qt::MouseButtons mouseState; int caps; QVector2D velocity; friend class QGuiApplicationPrivate; }; class Q_GUI_EXPORT QHoverEvent : public QInputEvent { public: QHoverEvent(Type type, const QPointF &pos, const QPointF &oldPos, Qt::KeyboardModifiers modifiers = Qt::NoModifier); ~QHoverEvent(); #ifndef QT_NO_INTEGER_EVENT_COORDINATES inline QPoint pos() const { return p.toPoint(); } inline QPoint oldPos() const { return op.toPoint(); } #endif inline const QPointF &posF() const { return p; } inline const QPointF &oldPosF() const { return op; } protected: QPointF p, op; }; #ifndef QT_NO_WHEELEVENT class Q_GUI_EXPORT QWheelEvent : public QInputEvent { public: enum { DefaultDeltasPerStep = 120 }; QWheelEvent(const QPointF &pos, int delta, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::Orientation orient = Qt::Vertical); QWheelEvent(const QPointF &pos, const QPointF& globalPos, int delta, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::Orientation orient = Qt::Vertical); QWheelEvent(const QPointF &pos, const QPointF& globalPos, QPoint pixelDelta, QPoint angleDelta, int qt4Delta, Qt::Orientation qt4Orientation, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers); QWheelEvent(const QPointF &pos, const QPointF& globalPos, QPoint pixelDelta, QPoint angleDelta, int qt4Delta, Qt::Orientation qt4Orientation, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::ScrollPhase phase); QWheelEvent(const QPointF &pos, const QPointF &globalPos, QPoint pixelDelta, QPoint angleDelta, int qt4Delta, Qt::Orientation qt4Orientation, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::ScrollPhase phase, Qt::MouseEventSource source); ~QWheelEvent(); inline QPoint pixelDelta() const { return pixelD; } inline QPoint angleDelta() const { return angleD; } inline int delta() const { return qt4D; } inline Qt::Orientation orientation() const { return qt4O; } #ifndef QT_NO_INTEGER_EVENT_COORDINATES inline QPoint pos() const { return p.toPoint(); } inline QPoint globalPos() const { return g.toPoint(); } inline int x() const { return p.x(); } inline int y() const { return p.y(); } inline int globalX() const { return g.x(); } inline int globalY() const { return g.y(); } #endif inline const QPointF &posF() const { return p; } inline const QPointF &globalPosF() const { return g; } inline Qt::MouseButtons buttons() const { return mouseState; } inline Qt::ScrollPhase phase() const { return Qt::ScrollPhase(ph); } Qt::MouseEventSource source() const { return Qt::MouseEventSource(src); } protected: QPointF p; QPointF g; QPoint pixelD; QPoint angleD; int qt4D; Qt::Orientation qt4O; Qt::MouseButtons mouseState; uint ph : 2; uint src: 2; int reserved : 28; }; #endif #ifndef QT_NO_TABLETEVENT class Q_GUI_EXPORT QTabletEvent : public QInputEvent { Q_GADGET public: enum TabletDevice { NoDevice, Puck, Stylus, Airbrush, FourDMouse, XFreeEraser /*internal*/, RotationStylus }; Q_ENUM(TabletDevice) enum PointerType { UnknownPointer, Pen, Cursor, Eraser }; Q_ENUM(PointerType) QTabletEvent(Type t, const QPointF &pos, const QPointF &globalPos, int device, int pointerType, qreal pressure, int xTilt, int yTilt, qreal tangentialPressure, qreal rotation, int z, Qt::KeyboardModifiers keyState, qint64 uniqueID); // ### remove in Qt 6 QTabletEvent(Type t, const QPointF &pos, const QPointF &globalPos, int device, int pointerType, qreal pressure, int xTilt, int yTilt, qreal tangentialPressure, qreal rotation, int z, Qt::KeyboardModifiers keyState, qint64 uniqueID, Qt::MouseButton button, Qt::MouseButtons buttons); ~QTabletEvent(); inline QPoint pos() const { return mPos.toPoint(); } inline QPoint globalPos() const { return mGPos.toPoint(); } #if QT_DEPRECATED_SINCE(5,0) QT_DEPRECATED inline const QPointF &hiResGlobalPos() const { return mPos; } #endif inline const QPointF &posF() const { return mPos; } inline const QPointF &globalPosF() const { return mGPos; } inline int x() const { return qRound(mPos.x()); } inline int y() const { return qRound(mPos.y()); } inline int globalX() const { return qRound(mGPos.x()); } inline int globalY() const { return qRound(mGPos.y()); } inline qreal hiResGlobalX() const { return mGPos.x(); } inline qreal hiResGlobalY() const { return mGPos.y(); } inline TabletDevice device() const { return TabletDevice(mDev); } inline PointerType pointerType() const { return PointerType(mPointerType); } inline qint64 uniqueId() const { return mUnique; } inline qreal pressure() const { return mPress; } inline int z() const { return mZ; } inline qreal tangentialPressure() const { return mTangential; } inline qreal rotation() const { return mRot; } inline int xTilt() const { return mXT; } inline int yTilt() const { return mYT; } Qt::MouseButton button() const; Qt::MouseButtons buttons() const; protected: QPointF mPos, mGPos; int mDev, mPointerType, mXT, mYT, mZ; qreal mPress, mTangential, mRot; qint64 mUnique; // QTabletEventPrivate for extra storage. // ### Qt 6: QPointingEvent will have Buttons, QTabletEvent will inherit void *mExtra; }; #endif // QT_NO_TABLETEVENT #ifndef QT_NO_GESTURES class Q_GUI_EXPORT QNativeGestureEvent : public QInputEvent { public: QNativeGestureEvent(Qt::NativeGestureType type, const QPointF &localPos, const QPointF &windowPos, const QPointF &screenPos, qreal value, ulong sequenceId, quint64 intArgument); Qt::NativeGestureType gestureType() const { return mGestureType; } qreal value() const { return mRealValue; } #ifndef QT_NO_INTEGER_EVENT_COORDINATES inline const QPoint pos() const { return mLocalPos.toPoint(); } inline const QPoint globalPos() const { return mScreenPos.toPoint(); } #endif const QPointF &localPos() const { return mLocalPos; } const QPointF &windowPos() const { return mWindowPos; } const QPointF &screenPos() const { return mScreenPos; } protected: Qt::NativeGestureType mGestureType; QPointF mLocalPos; QPointF mWindowPos; QPointF mScreenPos; qreal mRealValue; ulong mSequenceId; quint64 mIntValue; }; #endif // QT_NO_GESTURES class Q_GUI_EXPORT QKeyEvent : public QInputEvent { public: QKeyEvent(Type type, int key, Qt::KeyboardModifiers modifiers, const QString& text = QString(), bool autorep = false, ushort count = 1); QKeyEvent(Type type, int key, Qt::KeyboardModifiers modifiers, quint32 nativeScanCode, quint32 nativeVirtualKey, quint32 nativeModifiers, const QString &text = QString(), bool autorep = false, ushort count = 1); ~QKeyEvent(); int key() const { return k; } #ifndef QT_NO_SHORTCUT bool matches(QKeySequence::StandardKey key) const; #endif Qt::KeyboardModifiers modifiers() const; inline QString text() const { return txt; } inline bool isAutoRepeat() const { return autor; } inline int count() const { return int(c); } inline quint32 nativeScanCode() const { return nScanCode; } inline quint32 nativeVirtualKey() const { return nVirtualKey; } inline quint32 nativeModifiers() const { return nModifiers; } // Functions for the extended key event information #if QT_DEPRECATED_SINCE(5, 0) static inline QKeyEvent *createExtendedKeyEvent(Type type, int key, Qt::KeyboardModifiers modifiers, quint32 nativeScanCode, quint32 nativeVirtualKey, quint32 nativeModifiers, const QString& text = QString(), bool autorep = false, ushort count = 1) { return new QKeyEvent(type, key, modifiers, nativeScanCode, nativeVirtualKey, nativeModifiers, text, autorep, count); } inline bool hasExtendedInfo() const { return true; } #endif protected: QString txt; int k; quint32 nScanCode; quint32 nVirtualKey; quint32 nModifiers; ushort c; ushort autor:1; // ushort reserved:15; }; class Q_GUI_EXPORT QFocusEvent : public QEvent { public: explicit QFocusEvent(Type type, Qt::FocusReason reason=Qt::OtherFocusReason); ~QFocusEvent(); inline bool gotFocus() const { return type() == FocusIn; } inline bool lostFocus() const { return type() == FocusOut; } Qt::FocusReason reason() const; private: Qt::FocusReason m_reason; }; class Q_GUI_EXPORT QPaintEvent : public QEvent { public: explicit QPaintEvent(const QRegion& paintRegion); explicit QPaintEvent(const QRect &paintRect); ~QPaintEvent(); inline const QRect &rect() const { return m_rect; } inline const QRegion ®ion() const { return m_region; } protected: QRect m_rect; QRegion m_region; bool m_erased; }; class Q_GUI_EXPORT QMoveEvent : public QEvent { public: QMoveEvent(const QPoint &pos, const QPoint &oldPos); ~QMoveEvent(); inline const QPoint &pos() const { return p; } inline const QPoint &oldPos() const { return oldp;} protected: QPoint p, oldp; friend class QApplication; }; class Q_GUI_EXPORT QExposeEvent : public QEvent { public: explicit QExposeEvent(const QRegion &rgn); ~QExposeEvent(); inline const QRegion ®ion() const { return rgn; } protected: QRegion rgn; }; class Q_GUI_EXPORT QPlatformSurfaceEvent : public QEvent { public: enum SurfaceEventType { SurfaceCreated, SurfaceAboutToBeDestroyed }; explicit QPlatformSurfaceEvent(SurfaceEventType surfaceEventType); ~QPlatformSurfaceEvent(); inline SurfaceEventType surfaceEventType() const { return m_surfaceEventType; } protected: SurfaceEventType m_surfaceEventType; }; class Q_GUI_EXPORT QResizeEvent : public QEvent { public: QResizeEvent(const QSize &size, const QSize &oldSize); ~QResizeEvent(); inline const QSize &size() const { return s; } inline const QSize &oldSize()const { return olds;} protected: QSize s, olds; friend class QApplication; }; class Q_GUI_EXPORT QCloseEvent : public QEvent { public: QCloseEvent(); ~QCloseEvent(); }; class Q_GUI_EXPORT QIconDragEvent : public QEvent { public: QIconDragEvent(); ~QIconDragEvent(); }; class Q_GUI_EXPORT QShowEvent : public QEvent { public: QShowEvent(); ~QShowEvent(); }; class Q_GUI_EXPORT QHideEvent : public QEvent { public: QHideEvent(); ~QHideEvent(); }; #ifndef QT_NO_CONTEXTMENU class Q_GUI_EXPORT QContextMenuEvent : public QInputEvent { public: enum Reason { Mouse, Keyboard, Other }; QContextMenuEvent(Reason reason, const QPoint &pos, const QPoint &globalPos, Qt::KeyboardModifiers modifiers); QContextMenuEvent(Reason reason, const QPoint &pos, const QPoint &globalPos); QContextMenuEvent(Reason reason, const QPoint &pos); ~QContextMenuEvent(); inline int x() const { return p.x(); } inline int y() const { return p.y(); } inline int globalX() const { return gp.x(); } inline int globalY() const { return gp.y(); } inline const QPoint& pos() const { return p; } inline const QPoint& globalPos() const { return gp; } inline Reason reason() const { return Reason(reas); } protected: QPoint p; QPoint gp; uint reas : 8; }; #endif // QT_NO_CONTEXTMENU #ifndef QT_NO_INPUTMETHOD class Q_GUI_EXPORT QInputMethodEvent : public QEvent { public: enum AttributeType { TextFormat, Cursor, Language, Ruby, Selection }; class Attribute { public: Attribute(AttributeType t, int s, int l, QVariant val) : type(t), start(s), length(l), value(qMove(val)) {} AttributeType type; int start; int length; QVariant value; }; QInputMethodEvent(); QInputMethodEvent(const QString &preeditText, const QList &attributes); ~QInputMethodEvent(); void setCommitString(const QString &commitString, int replaceFrom = 0, int replaceLength = 0); inline const QList &attributes() const { return attrs; } inline const QString &preeditString() const { return preedit; } inline const QString &commitString() const { return commit; } inline int replacementStart() const { return replace_from; } inline int replacementLength() const { return replace_length; } QInputMethodEvent(const QInputMethodEvent &other); private: QString preedit; QList attrs; QString commit; int replace_from; int replace_length; }; Q_DECLARE_TYPEINFO(QInputMethodEvent::Attribute, Q_MOVABLE_TYPE); class Q_GUI_EXPORT QInputMethodQueryEvent : public QEvent { public: explicit QInputMethodQueryEvent(Qt::InputMethodQueries queries); ~QInputMethodQueryEvent(); Qt::InputMethodQueries queries() const { return m_queries; } void setValue(Qt::InputMethodQuery query, const QVariant &value); QVariant value(Qt::InputMethodQuery query) const; private: Qt::InputMethodQueries m_queries; struct QueryPair { Qt::InputMethodQuery query; QVariant value; }; QVector m_values; }; #endif // QT_NO_INPUTMETHOD #ifndef QT_NO_DRAGANDDROP class QMimeData; class Q_GUI_EXPORT QDropEvent : public QEvent { public: QDropEvent(const QPointF& pos, Qt::DropActions actions, const QMimeData *data, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Type type = Drop); ~QDropEvent(); inline QPoint pos() const { return p.toPoint(); } inline const QPointF &posF() const { return p; } inline Qt::MouseButtons mouseButtons() const { return mouseState; } inline Qt::KeyboardModifiers keyboardModifiers() const { return modState; } inline Qt::DropActions possibleActions() const { return act; } inline Qt::DropAction proposedAction() const { return default_action; } inline void acceptProposedAction() { drop_action = default_action; accept(); } inline Qt::DropAction dropAction() const { return drop_action; } void setDropAction(Qt::DropAction action); QObject* source() const; inline const QMimeData *mimeData() const { return mdata; } protected: friend class QApplication; QPointF p; Qt::MouseButtons mouseState; Qt::KeyboardModifiers modState; Qt::DropActions act; Qt::DropAction drop_action; Qt::DropAction default_action; const QMimeData *mdata; }; class Q_GUI_EXPORT QDragMoveEvent : public QDropEvent { public: QDragMoveEvent(const QPoint &pos, Qt::DropActions actions, const QMimeData *data, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Type type = DragMove); ~QDragMoveEvent(); inline QRect answerRect() const { return rect; } inline void accept() { QDropEvent::accept(); } inline void ignore() { QDropEvent::ignore(); } inline void accept(const QRect & r) { accept(); rect = r; } inline void ignore(const QRect & r) { ignore(); rect = r; } protected: QRect rect; }; class Q_GUI_EXPORT QDragEnterEvent : public QDragMoveEvent { public: QDragEnterEvent(const QPoint &pos, Qt::DropActions actions, const QMimeData *data, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers); ~QDragEnterEvent(); }; class Q_GUI_EXPORT QDragLeaveEvent : public QEvent { public: QDragLeaveEvent(); ~QDragLeaveEvent(); }; #endif // QT_NO_DRAGANDDROP class Q_GUI_EXPORT QHelpEvent : public QEvent { public: QHelpEvent(Type type, const QPoint &pos, const QPoint &globalPos); ~QHelpEvent(); inline int x() const { return p.x(); } inline int y() const { return p.y(); } inline int globalX() const { return gp.x(); } inline int globalY() const { return gp.y(); } inline const QPoint& pos() const { return p; } inline const QPoint& globalPos() const { return gp; } private: QPoint p; QPoint gp; }; #ifndef QT_NO_STATUSTIP class Q_GUI_EXPORT QStatusTipEvent : public QEvent { public: explicit QStatusTipEvent(const QString &tip); ~QStatusTipEvent(); inline QString tip() const { return s; } private: QString s; }; #endif #ifndef QT_NO_WHATSTHIS class Q_GUI_EXPORT QWhatsThisClickedEvent : public QEvent { public: explicit QWhatsThisClickedEvent(const QString &href); ~QWhatsThisClickedEvent(); inline QString href() const { return s; } private: QString s; }; #endif #ifndef QT_NO_ACTION class Q_GUI_EXPORT QActionEvent : public QEvent { QAction *act, *bef; public: QActionEvent(int type, QAction *action, QAction *before = Q_NULLPTR); ~QActionEvent(); inline QAction *action() const { return act; } inline QAction *before() const { return bef; } }; #endif class Q_GUI_EXPORT QFileOpenEvent : public QEvent { public: explicit QFileOpenEvent(const QString &file); explicit QFileOpenEvent(const QUrl &url); ~QFileOpenEvent(); inline QString file() const { return f; } QUrl url() const { return m_url; } bool openFile(QFile &file, QIODevice::OpenMode flags) const; private: QString f; QUrl m_url; }; #ifndef QT_NO_TOOLBAR class Q_GUI_EXPORT QToolBarChangeEvent : public QEvent { public: explicit QToolBarChangeEvent(bool t); ~QToolBarChangeEvent(); inline bool toggle() const { return tog; } private: uint tog : 1; }; #endif #ifndef QT_NO_SHORTCUT class Q_GUI_EXPORT QShortcutEvent : public QEvent { public: QShortcutEvent(const QKeySequence &key, int id, bool ambiguous = false); ~QShortcutEvent(); inline const QKeySequence &key() const { return sequence; } inline int shortcutId() const { return sid; } inline bool isAmbiguous() const { return ambig; } protected: QKeySequence sequence; bool ambig; int sid; }; #endif class Q_GUI_EXPORT QWindowStateChangeEvent: public QEvent { public: explicit QWindowStateChangeEvent(Qt::WindowStates aOldState, bool isOverride = false); ~QWindowStateChangeEvent(); inline Qt::WindowStates oldState() const { return ostate; } bool isOverride() const; private: Qt::WindowStates ostate; bool m_override; }; #ifndef QT_NO_DEBUG_STREAM Q_GUI_EXPORT QDebug operator<<(QDebug, const QEvent *); #endif #ifndef QT_NO_SHORTCUT inline bool operator==(QKeyEvent *e, QKeySequence::StandardKey key){return (e ? e->matches(key) : false);} inline bool operator==(QKeySequence::StandardKey key, QKeyEvent *e){return (e ? e->matches(key) : false);} #endif // QT_NO_SHORTCUT class QTouchEventTouchPointPrivate; class Q_GUI_EXPORT QTouchEvent : public QInputEvent { public: class Q_GUI_EXPORT TouchPoint { public: enum InfoFlag { Pen = 0x0001 }; #ifndef Q_MOC_RUN // otherwise moc gives // Error: Meta object features not supported for nested classes Q_DECLARE_FLAGS(InfoFlags, InfoFlag) #endif explicit TouchPoint(int id = -1); TouchPoint(const TouchPoint &other); #ifdef Q_COMPILER_RVALUE_REFS TouchPoint(TouchPoint &&other) Q_DECL_NOEXCEPT : d(0) { qSwap(d, other.d); } TouchPoint &operator=(TouchPoint &&other) Q_DECL_NOEXCEPT { qSwap(d, other.d); return *this; } #endif ~TouchPoint(); TouchPoint &operator=(const TouchPoint &other) { if ( d != other.d ) { TouchPoint copy(other); swap(copy); } return *this; } void swap(TouchPoint &other) Q_DECL_NOEXCEPT { qSwap(d, other.d); } int id() const; Qt::TouchPointState state() const; QPointF pos() const; QPointF startPos() const; QPointF lastPos() const; QPointF scenePos() const; QPointF startScenePos() const; QPointF lastScenePos() const; QPointF screenPos() const; QPointF startScreenPos() const; QPointF lastScreenPos() const; QPointF normalizedPos() const; QPointF startNormalizedPos() const; QPointF lastNormalizedPos() const; QRectF rect() const; QRectF sceneRect() const; QRectF screenRect() const; qreal pressure() const; QVector2D velocity() const; InfoFlags flags() const; QVector rawScreenPositions() const; // internal void setId(int id); void setState(Qt::TouchPointStates state); void setPos(const QPointF &pos); void setScenePos(const QPointF &scenePos); void setScreenPos(const QPointF &screenPos); void setNormalizedPos(const QPointF &normalizedPos); void setStartPos(const QPointF &startPos); void setStartScenePos(const QPointF &startScenePos); void setStartScreenPos(const QPointF &startScreenPos); void setStartNormalizedPos(const QPointF &startNormalizedPos); void setLastPos(const QPointF &lastPos); void setLastScenePos(const QPointF &lastScenePos); void setLastScreenPos(const QPointF &lastScreenPos); void setLastNormalizedPos(const QPointF &lastNormalizedPos); void setRect(const QRectF &rect); void setSceneRect(const QRectF &sceneRect); void setScreenRect(const QRectF &screenRect); void setPressure(qreal pressure); void setVelocity(const QVector2D &v); void setFlags(InfoFlags flags); void setRawScreenPositions(const QVector &positions); private: QTouchEventTouchPointPrivate *d; friend class QGuiApplication; friend class QGuiApplicationPrivate; friend class QApplication; friend class QApplicationPrivate; }; #if QT_DEPRECATED_SINCE(5, 0) enum DeviceType { TouchScreen, TouchPad }; #endif explicit QTouchEvent(QEvent::Type eventType, QTouchDevice *device = Q_NULLPTR, Qt::KeyboardModifiers modifiers = Qt::NoModifier, Qt::TouchPointStates touchPointStates = Qt::TouchPointStates(), const QList &touchPoints = QList()); ~QTouchEvent(); inline QWindow *window() const { return _window; } inline QObject *target() const { return _target; } #if QT_DEPRECATED_SINCE(5, 0) QT_DEPRECATED inline QTouchEvent::DeviceType deviceType() const { return static_cast(int(_device->type())); } #endif inline Qt::TouchPointStates touchPointStates() const { return _touchPointStates; } inline const QList &touchPoints() const { return _touchPoints; } inline QTouchDevice *device() const { return _device; } // internal inline void setWindow(QWindow *awindow) { _window = awindow; } inline void setTarget(QObject *atarget) { _target = atarget; } inline void setTouchPointStates(Qt::TouchPointStates aTouchPointStates) { _touchPointStates = aTouchPointStates; } inline void setTouchPoints(const QList &atouchPoints) { _touchPoints = atouchPoints; } inline void setDevice(QTouchDevice *adevice) { _device = adevice; } protected: QWindow *_window; QObject *_target; QTouchDevice *_device; Qt::TouchPointStates _touchPointStates; QList _touchPoints; friend class QGuiApplication; friend class QGuiApplicationPrivate; friend class QApplication; friend class QApplicationPrivate; #ifndef QT_NO_GRAPHICSVIEW friend class QGraphicsScenePrivate; // direct access to _touchPoints #endif }; Q_DECLARE_TYPEINFO(QTouchEvent::TouchPoint, Q_MOVABLE_TYPE); Q_DECLARE_OPERATORS_FOR_FLAGS(QTouchEvent::TouchPoint::InfoFlags) #ifndef QT_NO_DEBUG_STREAM Q_GUI_EXPORT QDebug operator<<(QDebug, const QTouchEvent::TouchPoint &); #endif class Q_GUI_EXPORT QScrollPrepareEvent : public QEvent { public: explicit QScrollPrepareEvent(const QPointF &startPos); ~QScrollPrepareEvent(); QPointF startPos() const; QSizeF viewportSize() const; QRectF contentPosRange() const; QPointF contentPos() const; void setViewportSize(const QSizeF &size); void setContentPosRange(const QRectF &rect); void setContentPos(const QPointF &pos); private: QObject* m_target; // Qt 6 remove. QPointF m_startPos; QSizeF m_viewportSize; QRectF m_contentPosRange; QPointF m_contentPos; }; class Q_GUI_EXPORT QScrollEvent : public QEvent { public: enum ScrollState { ScrollStarted, ScrollUpdated, ScrollFinished }; QScrollEvent(const QPointF &contentPos, const QPointF &overshoot, ScrollState scrollState); ~QScrollEvent(); QPointF contentPos() const; QPointF overshootDistance() const; ScrollState scrollState() const; private: QPointF m_contentPos; QPointF m_overshoot; QScrollEvent::ScrollState m_state; }; class Q_GUI_EXPORT QScreenOrientationChangeEvent : public QEvent { public: QScreenOrientationChangeEvent(QScreen *screen, Qt::ScreenOrientation orientation); ~QScreenOrientationChangeEvent(); QScreen *screen() const; Qt::ScreenOrientation orientation() const; private: QScreen *m_screen; Qt::ScreenOrientation m_orientation; }; class Q_GUI_EXPORT QApplicationStateChangeEvent : public QEvent { public: explicit QApplicationStateChangeEvent(Qt::ApplicationState state); Qt::ApplicationState applicationState() const; private: Qt::ApplicationState m_applicationState; }; QT_END_NAMESPACE #endif // QEVENT_H