123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299 | // Copyright (C) 2016 The Qt Company Ltd.// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only#ifndef QGESTURE_H#define QGESTURE_H#include <QtWidgets/qtwidgetsglobal.h>#include <QtCore/qobject.h>#include <QtCore/qmap.h>#include <QtCore/qlist.h>#include <QtCore/qdatetime.h>#include <QtCore/qpoint.h>#include <QtCore/qrect.h>#include <QtCore/qmetatype.h>#include <QtGui/qevent.h>#ifndef QT_NO_GESTURES// ### move to qnamespace.hQT_DECL_METATYPE_EXTERN_TAGGED(Qt::GestureState, Qt__GestureState, Q_WIDGETS_EXPORT)// ### move to qnamespace.hQT_DECL_METATYPE_EXTERN_TAGGED(Qt::GestureType, Qt__GestureType, Q_WIDGETS_EXPORT) QT_BEGIN_NAMESPACE class QGesturePrivate;class Q_WIDGETS_EXPORT QGesture :public QObject { Q_OBJECT Q_DECLARE_PRIVATE(QGesture)Q_PROPERTY(Qt::GestureState state READ state)Q_PROPERTY(Qt::GestureType gestureType READ gestureType)Q_PROPERTY(QGesture::GestureCancelPolicy gestureCancelPolicy READ gestureCancelPolicy WRITE setGestureCancelPolicy)Q_PROPERTY(QPointF hotSpot READ hotSpot WRITE setHotSpot RESET unsetHotSpot)Q_PROPERTY(bool hasHotSpot READ hasHotSpot)public:explicitQGesture(QObject *parent =nullptr);~QGesture();Qt::GestureType gestureType()const;Qt::GestureState state()const; QPointF hotSpot()const;voidsetHotSpot(const QPointF &value);boolhasHotSpot()const;voidunsetHotSpot();enum GestureCancelPolicy { CancelNone =0, CancelAllInContext };voidsetGestureCancelPolicy(GestureCancelPolicy policy); GestureCancelPolicy gestureCancelPolicy()const;protected:QGesture(QGesturePrivate &dd, QObject *parent);private:friend class QGestureEvent;friend class QGestureRecognizer;friend class QGestureManager;friend class QGraphicsScenePrivate;};class QPanGesturePrivate;class Q_WIDGETS_EXPORT QPanGesture :public QGesture { Q_OBJECT Q_DECLARE_PRIVATE(QPanGesture)Q_PROPERTY(QPointF lastOffset READ lastOffset WRITE setLastOffset)Q_PROPERTY(QPointF offset READ offset WRITE setOffset)Q_PROPERTY(QPointF delta READ delta STORED false)Q_PROPERTY(qreal acceleration READ acceleration WRITE setAcceleration)Q_PRIVATE_PROPERTY(QPanGesture::d_func(), qreal horizontalVelocity READ horizontalVelocity WRITE setHorizontalVelocity)Q_PRIVATE_PROPERTY(QPanGesture::d_func(), qreal verticalVelocity READ verticalVelocity WRITE setVerticalVelocity)public:explicitQPanGesture(QObject *parent =nullptr);~QPanGesture(); QPointF lastOffset()const; QPointF offset()const; QPointF delta()const; qreal acceleration()const;voidsetLastOffset(const QPointF &value);voidsetOffset(const QPointF &value);voidsetAcceleration(qreal value);friend class QPanGestureRecognizer;friend class QWinNativePanGestureRecognizer;};class QPinchGesturePrivate;class Q_WIDGETS_EXPORT QPinchGesture :public QGesture { Q_OBJECT Q_DECLARE_PRIVATE(QPinchGesture)public:enum ChangeFlag { ScaleFactorChanged =0x1, RotationAngleChanged =0x2, CenterPointChanged =0x4};Q_ENUM(ChangeFlag)Q_DECLARE_FLAGS(ChangeFlags, ChangeFlag)Q_FLAG(ChangeFlags)Q_PROPERTY(ChangeFlags totalChangeFlags READ totalChangeFlags WRITE setTotalChangeFlags)Q_PROPERTY(ChangeFlags changeFlags READ changeFlags WRITE setChangeFlags)Q_PROPERTY(qreal totalScaleFactor READ totalScaleFactor WRITE setTotalScaleFactor)Q_PROPERTY(qreal lastScaleFactor READ lastScaleFactor WRITE setLastScaleFactor)Q_PROPERTY(qreal scaleFactor READ scaleFactor WRITE setScaleFactor)Q_PROPERTY(qreal totalRotationAngle READ totalRotationAngle WRITE setTotalRotationAngle)Q_PROPERTY(qreal lastRotationAngle READ lastRotationAngle WRITE setLastRotationAngle)Q_PROPERTY(qreal rotationAngle READ rotationAngle WRITE setRotationAngle)Q_PROPERTY(QPointF startCenterPoint READ startCenterPoint WRITE setStartCenterPoint)Q_PROPERTY(QPointF lastCenterPoint READ lastCenterPoint WRITE setLastCenterPoint)Q_PROPERTY(QPointF centerPoint READ centerPoint WRITE setCenterPoint)public:explicitQPinchGesture(QObject *parent =nullptr);~QPinchGesture(); ChangeFlags totalChangeFlags()const;voidsetTotalChangeFlags(ChangeFlags value); ChangeFlags changeFlags()const;voidsetChangeFlags(ChangeFlags value); QPointF startCenterPoint()const; QPointF lastCenterPoint()const; QPointF centerPoint()const;voidsetStartCenterPoint(const QPointF &value);voidsetLastCenterPoint(const QPointF &value);voidsetCenterPoint(const QPointF &value); qreal totalScaleFactor()const; qreal lastScaleFactor()const; qreal scaleFactor()const;voidsetTotalScaleFactor(qreal value);voidsetLastScaleFactor(qreal value);voidsetScaleFactor(qreal value); qreal totalRotationAngle()const; qreal lastRotationAngle()const; qreal rotationAngle()const;voidsetTotalRotationAngle(qreal value);voidsetLastRotationAngle(qreal value);voidsetRotationAngle(qreal value);friend class QPinchGestureRecognizer;};Q_DECLARE_OPERATORS_FOR_FLAGS(QPinchGesture::ChangeFlags) QT_END_NAMESPACE QT_DECL_METATYPE_EXTERN_TAGGED(QPinchGesture::ChangeFlags, QPinchGesture__ChangeFlags, Q_WIDGETS_EXPORT) QT_BEGIN_NAMESPACE class QSwipeGesturePrivate;class Q_WIDGETS_EXPORT QSwipeGesture :public QGesture { Q_OBJECT Q_DECLARE_PRIVATE(QSwipeGesture)Q_PROPERTY(SwipeDirection horizontalDirection READ horizontalDirection STORED false)Q_PROPERTY(SwipeDirection verticalDirection READ verticalDirection STORED false)Q_PROPERTY(qreal swipeAngle READ swipeAngle WRITE setSwipeAngle)Q_PRIVATE_PROPERTY(QSwipeGesture::d_func(), qreal velocity READ velocity WRITE setVelocity)public:enum SwipeDirection { NoDirection, Left, Right, Up, Down };Q_ENUM(SwipeDirection)explicitQSwipeGesture(QObject *parent =nullptr);~QSwipeGesture(); SwipeDirection horizontalDirection()const; SwipeDirection verticalDirection()const; qreal swipeAngle()const;voidsetSwipeAngle(qreal value);friend class QSwipeGestureRecognizer;};class QTapGesturePrivate;class Q_WIDGETS_EXPORT QTapGesture :public QGesture { Q_OBJECT Q_DECLARE_PRIVATE(QTapGesture)Q_PROPERTY(QPointF position READ position WRITE setPosition)public:explicitQTapGesture(QObject *parent =nullptr);~QTapGesture(); QPointF position()const;voidsetPosition(const QPointF &pos);friend class QTapGestureRecognizer;};class QTapAndHoldGesturePrivate;class Q_WIDGETS_EXPORT QTapAndHoldGesture :public QGesture { Q_OBJECT Q_DECLARE_PRIVATE(QTapAndHoldGesture)Q_PROPERTY(QPointF position READ position WRITE setPosition)public:explicitQTapAndHoldGesture(QObject *parent =nullptr);~QTapAndHoldGesture(); QPointF position()const;voidsetPosition(const QPointF &pos);static voidsetTimeout(int msecs);static inttimeout();friend class QTapAndHoldGestureRecognizer;};class QGesture;class QGestureEventPrivate;class Q_WIDGETS_EXPORT QGestureEvent :public QEvent {public:explicitQGestureEvent(const QList<QGesture *> &gestures);~QGestureEvent(); QList<QGesture *>gestures()const; QGesture *gesture(Qt::GestureType type)const; QList<QGesture *>activeGestures()const; QList<QGesture *>canceledGestures()const;usingQEvent::setAccepted;usingQEvent::isAccepted;usingQEvent::accept;usingQEvent::ignore;voidsetAccepted(QGesture *,bool);voidaccept(QGesture *);voidignore(QGesture *);boolisAccepted(QGesture *)const;voidsetAccepted(Qt::GestureType,bool);voidaccept(Qt::GestureType);voidignore(Qt::GestureType);boolisAccepted(Qt::GestureType)const;voidsetWidget(QWidget *widget); QWidget *widget()const;#if QT_CONFIG(graphicsview) QPointF mapToGraphicsScene(const QPointF &gesturePoint)const;#endifprivate: QList<QGesture *> m_gestures; QWidget *m_widget; QMap<Qt::GestureType,bool> m_accepted; QMap<Qt::GestureType, QWidget *> m_targetWidgets;friend class QApplication;friend class QGestureManager;};# ifndef QT_NO_DEBUG_STREAM Q_WIDGETS_EXPORT QDebug operator<<(QDebug,const QGesture *); Q_WIDGETS_EXPORT QDebug operator<<(QDebug,const QGestureEvent *);# endif QT_END_NAMESPACE QT_DECL_METATYPE_EXTERN_TAGGED(QGesture::GestureCancelPolicy, QGesture__GestureCancelPolicy, Q_WIDGETS_EXPORT)#endif// QT_NO_GESTURES#endif// QGESTURE_H
|