Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
QQuickPinchHandler Class Reference

#include <qquickpinchhandler_p.h>

+ Inheritance diagram for QQuickPinchHandler:
+ Collaboration diagram for QQuickPinchHandler:

Signals

void minimumScaleChanged ()
 
void maximumScaleChanged ()
 
void minimumRotationChanged ()
 
void maximumRotationChanged ()
 
void updated ()
 
void scaleChanged (qreal delta)
 
void rotationChanged (qreal delta)
 
void translationChanged (QVector2D delta)
 
- Signals inherited from QQuickMultiPointHandler
void minimumPointCountChanged ()
 
void maximumPointCountChanged ()
 
void centroidChanged ()
 
- Signals inherited from QQuickPointerDeviceHandler
void acceptedDevicesChanged ()
 
void acceptedPointerTypesChanged ()
 
void acceptedButtonsChanged ()
 
void acceptedModifiersChanged ()
 
- Signals inherited from QQuickPointerHandler
void enabledChanged ()
 
void activeChanged ()
 
void targetChanged ()
 
void marginChanged ()
 
 Q_REVISION (2, 15) void dragThresholdChanged()
 
void grabChanged (QPointingDevice::GrabTransition transition, QEventPoint point)
 
void grabPermissionChanged ()
 
void canceled (QEventPoint point)
 
 Q_REVISION (6, 3) void parentChanged()
 
- Signals inherited from QObject
void destroyed (QObject *=nullptr)
 This signal is emitted immediately before the object obj is destroyed, after any instances of QPointer have been notified, and cannot be blocked.
 
void objectNameChanged (const QString &objectName, QPrivateSignal)
 This signal is emitted after the object's name has been changed.
 

Public Member Functions

 QQuickPinchHandler (QQuickItem *parent=nullptr)
 \qmltype PinchHandler \instantiates QQuickPinchHandler \inherits MultiPointHandler \inqmlmodule QtQuick
 
QQuickDragAxisxAxis ()
 
QQuickDragAxisyAxis ()
 
QPointF activeTranslation () const
 
QPointF persistentTranslation () const
 
void setPersistentTranslation (const QPointF &trans)
 \qmlsignal QtQuick::PinchHandler::translationChanged(QVector2D delta)
 
QQuickDragAxisscaleAxis ()
 
qreal activeScale () const
 
void setActiveScale (qreal scale)
 \readonly \qmlproperty real QtQuick::PinchHandler::activeScale
 
qreal persistentScale () const
 
void setPersistentScale (qreal scale)
 \qmlsignal QtQuick::PinchHandler::scaleChanged(qreal delta)
 
QQuickDragAxisrotationAxis ()
 
qreal activeRotation () const
 
void setActiveRotation (qreal rot)
 \qmlsignal QtQuick::PinchHandler::rotationChanged(qreal delta)
 
qreal persistentRotation () const
 
void setPersistentRotation (qreal rot)
 \qmlproperty real QtQuick::PinchHandler::persistentRotation
 
- Public Member Functions inherited from QQuickMultiPointHandler
 QQuickMultiPointHandler (QQuickItem *parent=nullptr, int minimumPointCount=2, int maximumPointCount=-1)
 \qmltype MultiPointHandler
 
int minimumPointCount () const
 \qmlproperty int MultiPointHandler::minimumPointCount
 
void setMinimumPointCount (int c)
 
int maximumPointCount () const
 \qmlproperty int MultiPointHandler::maximumPointCount
 
void setMaximumPointCount (int maximumPointCount)
 
const QQuickHandlerPointcentroid () const
 \readonly \qmlproperty QtQuick::handlerPoint QtQuick::MultiPointHandler::centroid
 
- Public Member Functions inherited from QQuickPointerDeviceHandler
 QQuickPointerDeviceHandler (QQuickItem *parent=nullptr)
 \qmltype PointerDeviceHandler \qmlabstract
 
QInputDevice::DeviceTypes acceptedDevices () const
 
QPointingDevice::PointerTypes acceptedPointerTypes () const
 
Qt::MouseButtons acceptedButtons () const
 \qmlproperty flags QtQuick::PointerDeviceHandler::acceptedButtons
 
Qt::KeyboardModifiers acceptedModifiers () const
 
- Public Member Functions inherited from QQuickPointerHandler
 QQuickPointerHandler (QQuickItem *parent=nullptr)
 \qmltype PointerHandler \qmlabstract
 
 ~QQuickPointerHandler ()
 
bool enabled () const
 \qmlproperty bool QtQuick::PointerHandler::enabled
 
void setEnabled (bool enabled)
 
bool active () const
 \readonly \qmlproperty bool QtQuick::PointerHandler::active
 
QQuickItemtarget () const
 \qmlproperty Item QtQuick::PointerHandler::target
 
void setTarget (QQuickItem *target)
 
QQuickItemparentItem () const
 \qmlproperty Item QtQuick::PointerHandler::parent
 
void setParentItem (QQuickItem *p)
 
void handlePointerEvent (QPointerEvent *event)
 
GrabPermissions grabPermissions () const
 \qmlproperty flags QtQuick::PointerHandler::grabPermissions
 
void setGrabPermissions (GrabPermissions grabPermissions)
 
qreal margin () const
 \qmlproperty real PointerHandler::margin
 
void setMargin (qreal pointDistanceThreshold)
 
int dragThreshold () const
 \qmlproperty int PointerHandler::dragThreshold
 
void setDragThreshold (int t)
 
void resetDragThreshold ()
 
- Public Member Functions inherited from QObject
Q_INVOKABLE QObject (QObject *parent=nullptr)
 Constructs an object with parent object parent.
 
virtual ~QObject ()
 Destroys the object, deleting all its child objects.
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 Filters events if this object has been installed as an event filter for the watched object.
 
QString objectName () const
 
Q_WEAK_OVERLOAD void setObjectName (const QString &name)
 Sets the object's name to name.
 
void setObjectName (QAnyStringView name)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
QBindable< QStringbindableObjectName ()
 
bool isWidgetType () const
 Returns true if the object is a widget; otherwise returns false.
 
bool isWindowType () const
 Returns true if the object is a window; otherwise returns false.
 
bool isQuickItemType () const
 Returns true if the object is a QQuickItem; otherwise returns false.
 
bool signalsBlocked () const noexcept
 Returns true if signals are blocked; otherwise returns false.
 
bool blockSignals (bool b) noexcept
 If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it).
 
QThreadthread () const
 Returns the thread in which the object lives.
 
bool moveToThread (QThread *thread QT6_DECL_NEW_OVERLOAD_TAIL)
 Changes the thread affinity for this object and its children and returns true on success.
 
int startTimer (int interval, Qt::TimerType timerType=Qt::CoarseTimer)
 This is an overloaded function that will start a timer of type timerType and a timeout of interval milliseconds.
 
int startTimer (std::chrono::nanoseconds time, Qt::TimerType timerType=Qt::CoarseTimer)
 
void killTimer (int id)
 Kills the timer with timer identifier, id.
 
void killTimer (Qt::TimerId id)
 
template<typename T >
findChild (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 Returns the child of this object that can be cast into type T and that is called name, or \nullptr if there is no such object.
 
template<typename T >
QList< T > findChildren (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects.
 
template<typename T >
findChild (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
template<typename T >
QList< T > findChildren (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
const QObjectListchildren () const
 Returns a list of child objects.
 
void setParent (QObject *parent)
 Makes the object a child of parent.
 
void installEventFilter (QObject *filterObj)
 Installs an event filter filterObj on this object.
 
void removeEventFilter (QObject *obj)
 Removes an event filter object obj from this object.
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
 
bool disconnect (const char *signal=nullptr, const QObject *receiver=nullptr, const char *member=nullptr) const
 
bool disconnect (const QObject *receiver, const char *member=nullptr) const
 
void dumpObjectTree () const
 Dumps a tree of children to the debug output.
 
void dumpObjectInfo () const
 Dumps information about signal connections, etc.
 
bool setProperty (const char *name, const QVariant &value)
 Sets the value of the object's name property to value.
 
bool setProperty (const char *name, QVariant &&value)
 
QVariant property (const char *name) const
 Returns the value of the object's name property.
 
QList< QByteArraydynamicPropertyNames () const
 
QBindingStoragebindingStorage ()
 
const QBindingStoragebindingStorage () const
 
QObjectparent () const
 Returns a pointer to the parent object.
 
bool inherits (const char *classname) const
 Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false.
 
- Public Member Functions inherited from QQmlParserStatus
 QQmlParserStatus ()
 
virtual ~QQmlParserStatus ()
 

Protected Member Functions

bool wantsPointerEvent (QPointerEvent *event) override
 It is the responsibility of this function to decide whether the event could be relevant at all to this handler, as a preliminary check.
 
void onActiveChanged () override
 \qmlpropertygroup QtQuick::PinchHandler::xAxis \qmlproperty real QtQuick::PinchHandler::xAxis.minimum \qmlproperty real QtQuick::PinchHandler::xAxis.maximum \qmlproperty bool QtQuick::PinchHandler::xAxis.enabled \qmlproperty real QtQuick::PinchHandler::xAxis.activeValue
 
void handlePointerEventImpl (QPointerEvent *event) override
 This function can be overridden to implement whatever behavior a specific subclass is intended to have: \list.
 
- Protected Member Functions inherited from QQuickMultiPointHandler
void onGrabChanged (QQuickPointerHandler *grabber, QPointingDevice::GrabTransition transition, QPointerEvent *event, QEventPoint &point) override
 Notification that the grab has changed in some way which is relevant to this handler.
 
QList< QQuickHandlerPoint > & currentPoints ()
 
QQuickHandlerPointmutableCentroid ()
 Returns a modifiable reference to the point that will be returned by the \l centroid property.
 
bool hasCurrentPoints (QPointerEvent *event)
 
QVector< QEventPointeligiblePoints (QPointerEvent *event)
 
qreal averageTouchPointDistance (const QPointF &ref)
 
qreal averageStartingDistance (const QPointF &ref)
 
qreal averageTouchPointAngle (const QPointF &ref)
 
qreal averageStartingAngle (const QPointF &ref)
 
QVector< PointDataangles (const QPointF &ref) const
 
void acceptPoints (const QVector< QEventPoint > &points)
 
bool grabPoints (QPointerEvent *event, const QVector< QEventPoint > &points)
 
void moveTarget (QPointF pos)
 
- Protected Member Functions inherited from QQuickPointerDeviceHandler
 QQuickPointerDeviceHandler (QQuickPointerDeviceHandlerPrivate &dd, QQuickItem *parent=nullptr)
 
bool wantsPointerEvent (QPointerEvent *event) override
 It is the responsibility of this function to decide whether the event could be relevant at all to this handler, as a preliminary check.
 
- Protected Member Functions inherited from QQuickPointerHandler
 QQuickPointerHandler (QQuickPointerHandlerPrivate &dd, QQuickItem *parent)
 
void classBegin () override
 Overridden only because QQmlParserStatus requires it.
 
void componentComplete () override
 Overridden from QQmlParserStatus to ensure that parentItem() sets its cursor if this handler's \l cursorShape property has been set.
 
bool event (QEvent *) override
 
QPointerEventcurrentEvent ()
 
virtual bool wantsEventPoint (const QPointerEvent *event, const QEventPoint &point)
 Returns true if the given point (as part of event) could be relevant at all to this handler, as a preliminary check.
 
void setActive (bool active)
 
virtual void onTargetChanged (QQuickItem *oldTarget)
 
virtual bool canGrab (QPointerEvent *event, const QEventPoint &point)
 Check whether it's OK to take an exclusive grab of the point.
 
virtual bool approveGrabTransition (QPointerEvent *event, const QEventPoint &point, QObject *proposedGrabber)
 Check this handler's rules to see if \l proposedGrabber will be allowed to take the exclusive grab.
 
void setPassiveGrab (QPointerEvent *event, const QEventPoint &point, bool grab=true)
 Acquire or give up a passive grab of the given point, according to the grab state.
 
bool setExclusiveGrab (QPointerEvent *ev, const QEventPoint &point, bool grab=true)
 Acquire or give up the exclusive grab of the given point, according to the grab state, and subject to the rules: canGrab(), and the rule not to relinquish another handler's grab.
 
void cancelAllGrabs (QPointerEvent *event, QEventPoint &point)
 Cancel any existing grab of the given point.
 
QPointF eventPos (const QEventPoint &point) const
 
bool parentContains (const QEventPoint &point) const
 Returns true if margin() > 0 and point is within the margin beyond QQuickItem::boundingRect(), or else returns QQuickItem::contains() QEventPoint::position() effectively (because parentContains(scenePosition) calls QQuickItem::mapFromScene()).
 
bool parentContains (const QPointF &scenePosition) const
 Returns true if scenePosition is within the margin() beyond QQuickItem::boundingRect() (if margin > 0), or parentItem() contains scenePosition according to QQuickItem::contains().
 
- Protected Member Functions inherited from QObject
QObjectsender () const
 Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns \nullptr.
 
int senderSignalIndex () const
 
int receivers (const char *signal) const
 Returns the number of receivers connected to the signal.
 
bool isSignalConnected (const QMetaMethod &signal) const
 
virtual void timerEvent (QTimerEvent *event)
 This event handler can be reimplemented in a subclass to receive timer events for the object.
 
virtual void childEvent (QChildEvent *event)
 This event handler can be reimplemented in a subclass to receive child events.
 
virtual void customEvent (QEvent *event)
 This event handler can be reimplemented in a subclass to receive custom events.
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 
 QObject (QObjectPrivate &dd, QObject *parent=nullptr)
 

Properties

QQuickDragAxisscaleAxis
 
qreal activeScale
 
qreal persistentScale
 
QQuickDragAxisrotationAxis
 
qreal activeRotation
 
qreal persistentRotation
 
QQuickDragAxisxAxis
 
QQuickDragAxisyAxis
 
QPointF activeTranslation
 
QPointF persistentTranslation
 
- Properties inherited from QQuickMultiPointHandler
int minimumPointCount
 
int maximumPointCount
 
QQuickHandlerPoint centroid
 
- Properties inherited from QQuickPointerDeviceHandler
QInputDevice::DeviceTypes acceptedDevices
 
QPointingDevice::PointerTypes acceptedPointerTypes
 
Qt::MouseButtons acceptedButtons
 
Qt::KeyboardModifiers acceptedModifiers
 
- Properties inherited from QQuickPointerHandler
bool enabled
 
bool active
 
QQuickItemtarget
 
QQuickItemparent
 
GrabPermissions grabPermissions
 
qreal margin
 
int dragThreshold
 
- Properties inherited from QObject
QString objectName
 the name of this object
 

Additional Inherited Members

- Public Types inherited from QQuickPointerHandler
enum  GrabPermission {
  TakeOverForbidden = 0x0 , CanTakeOverFromHandlersOfSameType = 0x01 , CanTakeOverFromHandlersOfDifferentType = 0x02 , CanTakeOverFromItems = 0x04 ,
  CanTakeOverFromAnything = 0x0F , ApprovesTakeOverByHandlersOfSameType = 0x10 , ApprovesTakeOverByHandlersOfDifferentType = 0x20 , ApprovesTakeOverByItems = 0x40 ,
  ApprovesCancellation = 0x80 , ApprovesTakeOverByAnything = 0xF0
}
 
- Public Slots inherited from QQuickPointerDeviceHandler
void setAcceptedDevices (QInputDevice::DeviceTypes acceptedDevices)
 \qmlproperty flags PointerDeviceHandler::acceptedDevices
 
void setAcceptedPointerTypes (QPointingDevice::PointerTypes acceptedPointerTypes)
 \qmlproperty flags PointerDeviceHandler::acceptedPointerTypes
 
void setAcceptedButtons (Qt::MouseButtons buttons)
 
void setAcceptedModifiers (Qt::KeyboardModifiers acceptedModifiers)
 \qmlproperty flags PointerDeviceHandler::acceptedModifiers
 
- Public Slots inherited from QObject
void deleteLater ()
 \threadsafe
 
- Static Public Member Functions inherited from QObject
static QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 \threadsafe
 
static QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
 
template<typename Func1 , typename Func2 >
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::ContextTypeForFunctor< Func2 >::ContextType *context, Func2 &&slot, Qt::ConnectionType type=Qt::AutoConnection)
 
template<typename Func1 , typename Func2 >
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, Func2 &&slot)
 
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 \threadsafe
 
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
 
static bool disconnect (const QMetaObject::Connection &)
 Disconnect a connection.
 
template<typename Func1 , typename Func2 >
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiver, Func2 slot)
 
template<typename Func1 >
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const QObject *receiver, void **zero)
 
- Static Protected Member Functions inherited from QQuickMultiPointHandler
static qreal averageAngleDelta (const QVector< PointData > &old, const QVector< PointData > &newAngles)
 
- Protected Attributes inherited from QObject
QScopedPointer< QObjectDatad_ptr
 

Detailed Description

Definition at line 29 of file qquickpinchhandler_p.h.

Constructor & Destructor Documentation

◆ QQuickPinchHandler()

QT_BEGIN_NAMESPACE QQuickPinchHandler::QQuickPinchHandler ( QQuickItem * parent = nullptr)
explicit

\qmltype PinchHandler \instantiates QQuickPinchHandler \inherits MultiPointHandler \inqmlmodule QtQuick

Handler for pinch gestures.

PinchHandler is a handler that interprets a multi-finger gesture to interactively rotate, zoom, and drag an Item. Like other Input Handlers, by default it is fully functional, and manipulates its \l target, which is the Item within which it is declared.

import QtQuick
Rectangle {
width: 400
height: 300
color: "lightsteelblue"
PinchHandler { }
}

It has properties to restrict the range of dragging, rotation, and zoom.

If it is declared within one Item but is assigned a different \l target, it handles events within the bounds of the outer Item but manipulates the target Item instead:

import QtQuick
Item {
width: 640
height: 480
Rectangle {
id: map
color: "aqua"
width: 400
height: 300
}
PinchHandler {
target: map
}
}

A third way to use it is to set \l target to null and react to property changes in some other way:

import QtQuick
Window {
width: 320; height: 240
visible: true
title: handler.persistentRotation.toFixed(1) + "° " +
handler.persistentTranslation.x.toFixed(1) + ", " +
handler.persistentTranslation.y.toFixed(1) + " " +
(handler.persistentScale * 100).toFixed(1) + "%"
PinchHandler {
id: handler
target: null
persistentScale: 0.25
onTranslationChanged: (delta) => {
image.x -= delta.x
image.y -= delta.y
}
}
Image {
id: image
source: "images/album-cover.jpg"
scale: handler.persistentScale
x: -600; y: -450
}
}
Note
The pinch begins when the number of fingers pressed is between \l {MultiPointHandler::minimumPointCount}{minimumPointCount} and \l {MultiPointHandler::maximumPointCount}{maximumPointCount}, inclusive. Until then, PinchHandler tracks the positions of any pressed fingers, but if it's a disallowed number, it does not scale or rotate its \l target, and the \l active property remains false.
See also
PinchArea, QPointerEvent::pointCount(), QNativeGestureEvent::fingerCount(), {Qt Quick Examples - Pointer Handlers}

Definition at line 62 of file qquickpinchhandler.cpp.

References QQuickPointerDeviceHandler::acceptedButtons, and Qt::NoButton.

Member Function Documentation

◆ activeRotation()

qreal QQuickPinchHandler::activeRotation ( ) const
inline

Definition at line 95 of file qquickpinchhandler_p.h.

◆ activeScale()

qreal QQuickPinchHandler::activeScale ( ) const
inline

Definition at line 82 of file qquickpinchhandler_p.h.

◆ activeTranslation()

QPointF QQuickPinchHandler::activeTranslation ( ) const
inline

Definition at line 70 of file qquickpinchhandler_p.h.

◆ handlePointerEventImpl()

void QQuickPinchHandler::handlePointerEventImpl ( QPointerEvent * event)
overrideprotectedvirtual

This function can be overridden to implement whatever behavior a specific subclass is intended to have: \list.

Reimplemented from QQuickMultiPointHandler.

Definition at line 497 of file qquickpinchhandler.cpp.

References QQuickMultiPointHandler::acceptPoints(), QQuickPointerHandler::active, activeScale, activeTranslation, QQuickDragAxis::activeValue, QQuickMultiPointHandler::angles(), QQuickMultiPointHandler::averageAngleDelta(), QQuickMultiPointHandler::averageTouchPointDistance(), Qt::BeginNativeGesture, QQuickMultiPointHandler::centroid, QQuickMultiPointHandler::currentPoints(), d, dist(), QQuickPointerHandler::dragThreshold, emit, QQuickDragAxis::enabled, QQuickPointerHandler::enabled, Qt::EndNativeGesture, QQuickItemPrivate::get(), QQuickMultiPointHandler::grabPoints(), QQuickMultiPointHandler::handlePointerEventImpl(), Qt::hex(), QVector2D::length(), QQuickDragAxis::maximum, QQuickMultiPointHandler::maximumPointCount, QQuickDragAxis::minimum, QQuickMultiPointHandler::minimumPointCount, QQuickMultiPointHandler::mutableCentroid(), QEvent::NativeGesture, QQuickPointerHandler::parentItem(), persistentTranslation, QQuickDragAxis::persistentValue(), pos, QEventPoint::Pressed, Q_ASSERT, Q_UNLIKELY, qAbs(), qBound(), qCDebug, QQuickHandlerPoint::reset(), Qt::RotateNativeGesture, QQuickHandlerPoint::scenePosition, QQuickHandlerPoint::scenePressPosition, QQuickPointerHandler::setActive(), setActiveRotation(), setActiveScale(), QQuickPointerHandler::setPassiveGrab(), QList< T >::size(), QQuickPointerHandler::target, translationChanged(), updated(), QQuickDragAxis::updateValue(), QPointF::x(), QVector2D::x(), QVector3D::x(), xAxis, QPointF::y(), QVector2D::y(), QVector3D::y(), yAxis, and Qt::ZoomNativeGesture.

+ Here is the call graph for this function:

◆ maximumRotationChanged

void QQuickPinchHandler::maximumRotationChanged ( )
signal

◆ maximumScaleChanged

void QQuickPinchHandler::maximumScaleChanged ( )
signal

◆ minimumRotationChanged

void QQuickPinchHandler::minimumRotationChanged ( )
signal

◆ minimumScaleChanged

void QQuickPinchHandler::minimumScaleChanged ( )
signal

◆ onActiveChanged()

void QQuickPinchHandler::onActiveChanged ( )
overrideprotectedvirtual

\qmlpropertygroup QtQuick::PinchHandler::xAxis \qmlproperty real QtQuick::PinchHandler::xAxis.minimum \qmlproperty real QtQuick::PinchHandler::xAxis.maximum \qmlproperty bool QtQuick::PinchHandler::xAxis.enabled \qmlproperty real QtQuick::PinchHandler::xAxis.activeValue

xAxis controls the constraints for horizontal translation of the \l target item.

minimum is the minimum acceptable x coordinate of the translation. maximum is the maximum acceptable x coordinate of the translation. If enabled is true, horizontal dragging is allowed.

The activeValueChanged signal is emitted when activeValue changes, to provide the increment by which it changed. This is intended for incrementally adjusting one property via multiple handlers.

import QtQuick
Rectangle {
width: 100; height: 100
color: "lightsteelblue"; antialiasing: true
PinchHandler {
id: handler
target: null
xAxis.onActiveValueChanged: (delta) => parent.radius -= delta
yAxis.onActiveValueChanged: (delta) => parent.border.width += delta
rotationAxis.onActiveValueChanged: (delta) => parent.rotation += delta // add
scaleAxis.onActiveValueChanged: (delta) => parent.scale *= delta // multiply
}
WheelHandler {
acceptedModifiers: Qt.NoModifier
property: "rotation"
}
WheelHandler {
acceptedModifiers: Qt.ControlModifier
property: "scale"
}
}
Note
The snippet is contrived: PinchHandler already knows how to move, scale and rotate its parent item, but this code achieves different behavior in a less-declarative way, to illustrate how to use activeValueChanged in special cases.

\qmlpropertygroup QtQuick::PinchHandler::yAxis \qmlproperty real QtQuick::PinchHandler::yAxis.minimum \qmlproperty real QtQuick::PinchHandler::yAxis.maximum \qmlproperty bool QtQuick::PinchHandler::yAxis.enabled \qmlproperty real QtQuick::PinchHandler::yAxis.activeValue

yAxis controls the constraints for vertical translation of the \l target item.

minimum is the minimum acceptable y coordinate of the translation. maximum is the maximum acceptable y coordinate of the translation. If enabled is true, vertical dragging is allowed.

The activeValueChanged signal is emitted when activeValue changes, to provide the increment by which it changed. This is intended for incrementally adjusting one property via multiple handlers.

import QtQuick
Rectangle {
width: 100; height: 100
color: "lightsteelblue"; antialiasing: true
PinchHandler {
id: handler
target: null
xAxis.onActiveValueChanged: (delta) => parent.radius -= delta
yAxis.onActiveValueChanged: (delta) => parent.border.width += delta
rotationAxis.onActiveValueChanged: (delta) => parent.rotation += delta // add
scaleAxis.onActiveValueChanged: (delta) => parent.scale *= delta // multiply
}
WheelHandler {
acceptedModifiers: Qt.NoModifier
property: "rotation"
}
WheelHandler {
acceptedModifiers: Qt.ControlModifier
property: "scale"
}
}
Note
The snippet is contrived: PinchHandler already knows how to move, scale and rotate its parent item, but this code achieves different behavior in a less-declarative way, to illustrate how to use activeValueChanged in special cases.

\qmlpropertygroup QtQuick::PinchHandler::scaleAxis \qmlproperty real QtQuick::PinchHandler::scaleAxis.minimum \qmlproperty real QtQuick::PinchHandler::scaleAxis.maximum \qmlproperty bool QtQuick::PinchHandler::scaleAxis.enabled \qmlproperty real QtQuick::PinchHandler::scaleAxis.activeValue

scaleAxis controls the constraints for setting the \l {QtQuick::Item::scale}{scale} of the \l target item according to the distance between the touchpoints.

minimum is the minimum acceptable scale. maximum is the maximum acceptable scale. If enabled is true, scaling is allowed. activeValue is the same as \l {QtQuick::PinchHandler::activeScale}.

The activeValueChanged signal is emitted when activeValue changes, to provide the multiplier for the incremental change. This is intended for incrementally adjusting one property via multiple handlers.

import QtQuick
Rectangle {
width: 100; height: 100
color: "lightsteelblue"; antialiasing: true
PinchHandler {
id: handler
target: null
xAxis.onActiveValueChanged: (delta) => parent.radius -= delta
yAxis.onActiveValueChanged: (delta) => parent.border.width += delta
rotationAxis.onActiveValueChanged: (delta) => parent.rotation += delta // add
scaleAxis.onActiveValueChanged: (delta) => parent.scale *= delta // multiply
}
WheelHandler {
acceptedModifiers: Qt.NoModifier
property: "rotation"
}
WheelHandler {
acceptedModifiers: Qt.ControlModifier
property: "scale"
}
}
Note
The snippet is contrived: PinchHandler already knows how to move, scale and rotate its parent item, but this code achieves different behavior in a less-declarative way, to illustrate how to use activeValueChanged in special cases.

\qmlpropertygroup QtQuick::PinchHandler::rotationAxis \qmlproperty real QtQuick::PinchHandler::rotationAxis.minimum \qmlproperty real QtQuick::PinchHandler::rotationAxis.maximum \qmlproperty bool QtQuick::PinchHandler::rotationAxis.enabled \qmlproperty real QtQuick::PinchHandler::rotationAxis.activeValue

rotationAxis controls the constraints for setting the \l {QtQuick::Item::rotation}{rotation} of the \l target item according to the rotation of the group of touchpoints.

minimum is the minimum acceptable rotation. maximum is the maximum acceptable rotation. If enabled is true, rotation is allowed. activeValue is the same as \l {QtQuick::PinchHandler::activeRotation}.

The activeValueChanged signal is emitted when activeValue changes, to provide the increment by which it changed. This is intended for incrementally adjusting one property via multiple handlers.

import QtQuick
Rectangle {
width: 100; height: 100
color: "lightsteelblue"; antialiasing: true
PinchHandler {
id: handler
target: null
xAxis.onActiveValueChanged: (delta) => parent.radius -= delta
yAxis.onActiveValueChanged: (delta) => parent.border.width += delta
rotationAxis.onActiveValueChanged: (delta) => parent.rotation += delta // add
scaleAxis.onActiveValueChanged: (delta) => parent.scale *= delta // multiply
}
WheelHandler {
acceptedModifiers: Qt.NoModifier
property: "rotation"
}
WheelHandler {
acceptedModifiers: Qt.ControlModifier
property: "scale"
}
}
Note
The snippet is contrived: PinchHandler already knows how to move, scale and rotate its parent item, but this code achieves different behavior in a less-declarative way, to illustrate how to use activeValueChanged in special cases.

\readonly \qmlproperty bool QtQuick::PinchHandler::active

This property is true when all the constraints (epecially \l {MultiPointHandler::minimumPointCount}{minimumPointCount} and \l {MultiPointHandler::maximumPointCount}{maximumPointCount}) are satisfied and the \l target, if any, is being manipulated.

Reimplemented from QQuickMultiPointHandler.

Definition at line 475 of file qquickpinchhandler.cpp.

References QQuickPointerHandler::active, QQuickMultiPointHandler::angles(), QQuickMultiPointHandler::averageTouchPointDistance(), QQuickMultiPointHandler::centroid, QQuickMultiPointHandler::onActiveChanged(), QQuickDragAxis::onActiveChanged(), QQuickItem::position(), qCDebug, and QQuickPointerHandler::target.

+ Here is the call graph for this function:

◆ persistentRotation()

qreal QQuickPinchHandler::persistentRotation ( ) const
inline

Definition at line 97 of file qquickpinchhandler_p.h.

◆ persistentScale()

qreal QQuickPinchHandler::persistentScale ( ) const
inline

Definition at line 84 of file qquickpinchhandler_p.h.

◆ persistentTranslation()

QPointF QQuickPinchHandler::persistentTranslation ( ) const
inline

Definition at line 71 of file qquickpinchhandler_p.h.

◆ rotationAxis()

QQuickDragAxis * QQuickPinchHandler::rotationAxis ( )
inline

Definition at line 87 of file qquickpinchhandler_p.h.

◆ rotationChanged

void QQuickPinchHandler::rotationChanged ( qreal delta)
signal

Referenced by setActiveRotation(), and setPersistentRotation().

+ Here is the caller graph for this function:

◆ scaleAxis()

QQuickDragAxis * QQuickPinchHandler::scaleAxis ( )
inline

Definition at line 74 of file qquickpinchhandler_p.h.

◆ scaleChanged

void QQuickPinchHandler::scaleChanged ( qreal delta)
signal

Referenced by setActiveScale(), and setPersistentScale().

+ Here is the caller graph for this function:

◆ setActiveRotation()

void QQuickPinchHandler::setActiveRotation ( qreal rot)

\qmlsignal QtQuick::PinchHandler::rotationChanged(qreal delta)

The rotationChanged signal is emitted when \l activeRotation (and therefore \l persistentRotation) changes. The delta value gives the additive change in rotation. For example, if the user moves fingers to change the pinch distance so that activeRotation changes from 10 to 30 degrees, rotationChanged(20) will be emitted. You can use that to incrementally change the rotation of an item:

import QtQuick
Rectangle {
width: 100; height: 100
color: "lightsteelblue"
PinchHandler {
id: handler
target: null
onRotationChanged: (delta) => parent.rotation += delta // add
onScaleChanged: (delta) => parent.scale *= delta // multiply
}
}
Note
If you set the \l persistentRotation property directly, delta is 0.

\readonly \qmlproperty QVector2D QtQuick::PinchHandler::rotation

Deprecated
[6.5] Use activeRotation

\readonly \qmlproperty real QtQuick::PinchHandler::activeRotation

The rotation of the pinch gesture in degrees, with positive values clockwise. It is 0 when the gesture begins. If \l target is not null, this will be automatically added to its \l {Item::rotation}{rotation}. Otherwise, bindings can be used to do arbitrary things with this value.

See also
QtQuick::PinchHandler::rotationAxis.activeValue

Definition at line 239 of file qquickpinchhandler.cpp.

References activeRotation, QQuickDragAxis::activeValue, emit, rotationChanged(), and QQuickDragAxis::updateValue().

Referenced by handlePointerEventImpl().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setActiveScale()

void QQuickPinchHandler::setActiveScale ( qreal scale)

\readonly \qmlproperty real QtQuick::PinchHandler::activeScale

The scale factor while the pinch gesture is being performed. It is 1.0 when the gesture begins, increases as the touchpoints are spread apart, and decreases as the touchpoints are brought together. If \l target is not null, its \l {Item::scale}{scale} will be automatically multiplied by this value. Otherwise, bindings can be used to do arbitrary things with this value.

See also
QtQuick::PinchHandler::scaleAxis.activeValue

Definition at line 117 of file qquickpinchhandler.cpp.

References activeScale, QQuickDragAxis::activeValue, emit, scaleChanged(), and QQuickDragAxis::updateValue().

Referenced by handlePointerEventImpl().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setPersistentRotation()

void QQuickPinchHandler::setPersistentRotation ( qreal rot)

\qmlproperty real QtQuick::PinchHandler::persistentRotation

The rotation to be applied to the \l target if it is not null. Otherwise, bindings can be used to do arbitrary things with this value. While the pinch gesture is being performed, \l activeRotation is continuously added; after the gesture ends, it stays the same; and when the next pinch gesture begins, it begins to be modified by activeRotation again.

It's possible to set this property, as a way of synchronizing the basis rotation with a rotation that was set in some other way, for example by another handler. If you set this property directly, activeRotation does not change, and rotationChanged(0) is emitted.

Definition at line 264 of file qquickpinchhandler.cpp.

References QQuickDragAxis::activeValue, emit, persistentRotation, rotationChanged(), and QQuickDragAxis::updateValue().

+ Here is the call graph for this function:

◆ setPersistentScale()

void QQuickPinchHandler::setPersistentScale ( qreal scale)

\qmlsignal QtQuick::PinchHandler::scaleChanged(qreal delta)

The scaleChanged signal is emitted when \l activeScale (and therefore \l persistentScale) changes. The delta value gives the multiplicative change in scale. For example, if the user moves fingers to change the pinch distance so that activeScale changes from 2 to 2.5, scaleChanged(1.25) will be emitted. You can use that to incrementally change the scale of an item:

import QtQuick
Rectangle {
width: 100; height: 100
color: "lightsteelblue"
PinchHandler {
id: handler
target: null
onRotationChanged: (delta) => parent.rotation += delta // add
onScaleChanged: (delta) => parent.scale *= delta // multiply
}
}
Note
If you set the \l persistentScale property directly, delta is 1.

\readonly \qmlproperty QVector2D QtQuick::PinchHandler::scale

Deprecated
[6.5] Use persistentScale

\qmlproperty real QtQuick::PinchHandler::persistentScale

The scale factor that will automatically be set on the \l target if it is not null. Otherwise, bindings can be used to do arbitrary things with this value. While the pinch gesture is being performed, it is continuously multiplied by \l activeScale; after the gesture ends, it stays the same; and when the next pinch gesture begins, it begins to be multiplied by activeScale again.

It's possible to set this property, as a way of synchronizing the basis scale with a scale that was set in some other way, for example by another handler. If you set this property directly, activeScale does not change, and scaleChanged(1) is emitted.

Definition at line 163 of file qquickpinchhandler.cpp.

References QQuickDragAxis::activeValue, emit, persistentScale, scaleChanged(), and QQuickDragAxis::updateValue().

+ Here is the call graph for this function:

◆ setPersistentTranslation()

void QQuickPinchHandler::setPersistentTranslation ( const QPointF & trans)

\qmlsignal QtQuick::PinchHandler::translationChanged(QVector2D delta)

The translationChanged signal is emitted when \l activeTranslation (and therefore \l persistentTranslation) changes. The delta vector gives the change in translation. You can use that to incrementally change the position of an item:

import QtQuick
Window {
width: 320; height: 240
visible: true
title: handler.persistentRotation.toFixed(1) + "° " +
handler.persistentTranslation.x.toFixed(1) + ", " +
handler.persistentTranslation.y.toFixed(1) + " " +
(handler.persistentScale * 100).toFixed(1) + "%"
PinchHandler {
id: handler
target: null
persistentScale: 0.25
onTranslationChanged: (delta) => {
image.x -= delta.x
image.y -= delta.y
}
}
Image {
id: image
source: "images/album-cover.jpg"
scale: handler.persistentScale
x: -600; y: -450
}
}
Note
If you set the \l persistentTranslation property directly, delta is {0, 0}.

\readonly \qmlproperty QVector2D QtQuick::PinchHandler::translation

Deprecated
[6.5] Use activeTranslation

\readonly \qmlproperty QPointF QtQuick::PinchHandler::activeTranslation

The translation of the cluster of points while the pinch gesture is being performed. It is {0, 0} when the gesture begins, and increases as the \l {eventPoint}{eventPoint(s)} are dragged downward and to the right. After the gesture ends, it stays the same; and when the next pinch gesture begins, it is reset to {0, 0} again.

Note
On some touchpads, such as on a \macos trackpad, native gestures do not generate any translation values, and this property stays at (0, 0).

\qmlproperty QPointF QtQuick::PinchHandler::persistentTranslation

The translation to be applied to the \l target if it is not null. Otherwise, bindings can be used to do arbitrary things with this value. While the pinch gesture is being performed, \l activeTranslation is continuously added to it; after the gesture ends, it stays the same.

It's possible to set this property, as a way of synchronizing the basis translation with a translation that was set in some other way, for example by another handler. If you set this property directly, activeTranslation does not change, and translationChanged({0, 0}) is emitted.

Note
On some touchpads, such as on a \macos trackpad, native gestures do not generate any translation values, and this property stays at (0, 0).

Definition at line 323 of file qquickpinchhandler.cpp.

References QQuickDragAxis::activeValue, emit, persistentTranslation, translationChanged(), QQuickDragAxis::updateValue(), QPointF::x(), and QPointF::y().

+ Here is the call graph for this function:

◆ translationChanged

void QQuickPinchHandler::translationChanged ( QVector2D delta)
signal

Referenced by handlePointerEventImpl(), and setPersistentTranslation().

+ Here is the caller graph for this function:

◆ updated

void QQuickPinchHandler::updated ( )
signal

Referenced by handlePointerEventImpl().

+ Here is the caller graph for this function:

◆ wantsPointerEvent()

bool QQuickPinchHandler::wantsPointerEvent ( QPointerEvent * event)
overrideprotectedvirtual

It is the responsibility of this function to decide whether the event could be relevant at all to this handler, as a preliminary check.

Returns true if this handler would like handlePointerEventImpl() to be called. If it returns false, the handler will be deactivated: setActive(false) will be called, and any remaining exclusive grab will be relinquished, as a fail-safe.

If you override this function, you should call the immediate parent class implementation (and return false if it returns false); that in turn calls its parent class implementation, and so on. QQuickSinglePointHandler::wantsPointerEvent() and QQuickMultiPointHandler::wantsPointerEvent() call wantsEventPoint(), which is also virtual. You usually can get the behavior you want by subclassing the appropriate handler type, overriding QQuickSinglePointHandler::handleEventPoint() or handlePointerEventImpl(), and perhaps overriding wantsEventPoint() if needed.

See also
wantsEventPoint(), QQuickPointerDeviceHandler::wantsPointerEvent(), QQuickMultiPointHandler::wantsPointerEvent(), QQuickSinglePointHandler::wantsPointerEvent()

Reimplemented from QQuickMultiPointHandler.

Definition at line 333 of file qquickpinchhandler.cpp.

References Qt::BeginNativeGesture, Qt::EndNativeGesture, QQuickMultiPointHandler::maximumPointCount, QQuickMultiPointHandler::minimumPointCount, QEvent::NativeGesture, QQuickPointerHandler::parentContains(), Qt::RotateNativeGesture, QQuickMultiPointHandler::wantsPointerEvent(), and Qt::ZoomNativeGesture.

+ Here is the call graph for this function:

◆ xAxis()

QQuickDragAxis * QQuickPinchHandler::xAxis ( )
inline

Definition at line 65 of file qquickpinchhandler_p.h.

◆ yAxis()

QQuickDragAxis * QQuickPinchHandler::yAxis ( )
inline

Definition at line 66 of file qquickpinchhandler_p.h.

Property Documentation

◆ activeRotation

qreal QQuickPinchHandler::activeRotation
read

Definition at line 48 of file qquickpinchhandler_p.h.

Referenced by setActiveRotation().

◆ activeScale

qreal QQuickPinchHandler::activeScale
read

Definition at line 39 of file qquickpinchhandler_p.h.

Referenced by handlePointerEventImpl(), and setActiveScale().

◆ activeTranslation

QPointF QQuickPinchHandler::activeTranslation
read

Definition at line 56 of file qquickpinchhandler_p.h.

Referenced by handlePointerEventImpl().

◆ persistentRotation

qreal QQuickPinchHandler::persistentRotation
readwrite

Definition at line 49 of file qquickpinchhandler_p.h.

Referenced by setPersistentRotation().

◆ persistentScale

qreal QQuickPinchHandler::persistentScale
readwrite

Definition at line 40 of file qquickpinchhandler_p.h.

Referenced by setPersistentScale().

◆ persistentTranslation

QPointF QQuickPinchHandler::persistentTranslation
readwrite

Definition at line 57 of file qquickpinchhandler_p.h.

Referenced by handlePointerEventImpl(), and setPersistentTranslation().

◆ rotationAxis

QQuickDragAxis * QQuickPinchHandler::rotationAxis
read

Definition at line 42 of file qquickpinchhandler_p.h.

◆ scaleAxis

QQuickDragAxis * QQuickPinchHandler::scaleAxis
read

Definition at line 33 of file qquickpinchhandler_p.h.

◆ xAxis

QQuickDragAxis * QQuickPinchHandler::xAxis
read

Definition at line 51 of file qquickpinchhandler_p.h.

Referenced by handlePointerEventImpl().

◆ yAxis

QQuickDragAxis * QQuickPinchHandler::yAxis
read

Definition at line 52 of file qquickpinchhandler_p.h.

Referenced by handlePointerEventImpl().


The documentation for this class was generated from the following files: