Qt 5.13 | Qt Quick | QML Types | DragHandler QML Type

Qt 5.13.2 Reference Documentation

# DragHandler QML Type

Handler for dragging. More...

Import Statement: | import QtQuick 2.13
Inherits: | MultiPointHandler

- List of all members, including inherited members

## Properties

- translation : QVector2D
- xAxis
  - xAxis.minimum : real
  - xAxis.maximum : real
  - xAxis.enabled : bool
- yAxis
  - yAxis.minimum : real
  - yAxis.maximum : real
  - yAxis.enabled : bool

## Detailed Description

DragHandler is a handler that is used to interactively move an Item. Like other Input Handlers, by default it is fully functional, and manipulates its target.

      import QtQuick 2.12

      Rectangle {
          width: 100
          height: 100
          color: "lightsteelblue"
          DragHandler { }
      }

It has properties to restrict the range of dragging.

If it is declared within one Item but is assigned a different target, then it handles events within the bounds of the parent Item but manipulates the `target` Item instead:

      import QtQuick 2.12

      Item {
          width: 640
          height: 480

          Rectangle {
              id: feedback
              border.color: "red"
              width: Math.max(10, handler.centroid.ellipseDiameters.width)
              height: Math.max(10, handler.centroid.ellipseDiameters.height)
              radius: Math.max(width, height) / 2
              visible: handler.active
          }

          DragHandler {
              id: handler
              target: feedback
          }
      }

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

      import QtQuick 2.12

      Item {
          width: 640
          height: 480

          DragHandler {
              id: handler
              target: null
          }

          Text {
              color: handler.active ? "darkgreen" : "black"
              text: handler.centroid.position.x.toFixed(1) + "," + handler.centroid.position.y.toFixed(1)
              x: handler.centroid.position.x - width / 2
              y: handler.centroid.position.y - height
          }
      }

If minimumPointCount and maximumPointCount are set to values larger than 1, the user will need to drag that many fingers in the same direction to start dragging. A multi-finger drag gesture can be detected independently of both a (default) single-finger DragHandler and a PinchHandler on the same Item, and thus can be used to adjust some other feature independently of the usual pinch behavior: for example adjust a tilt transformation, or adjust some other numeric value, if the `target` is set to null. But if the `target` is an Item, `centroid` is the point at which the drag begins and to which the `target` will be moved (subject to constraints).

At this time, drag-and-drop is not yet supported.

See also Drag and MouseArea.

## Property Documentation

[read-only] translation : QVector2D

The translation since the gesture began.

xAxis group
xAxis.minimum : real
xAxis.maximum : real
xAxis.enabled : bool

`xAxis` controls the constraints for horizontal dragging.

`minimum` is the minimum acceptable value of x to be applied to the target. `maximum` is the maximum acceptable value of x to be applied to the target. If `enabled` is true, horizontal dragging is allowed.

yAxis group
yAxis.minimum : real
yAxis.maximum : real
yAxis.enabled : bool

`yAxis` controls the constraints for vertical dragging.

`minimum` is the minimum acceptable value of y to be applied to the target. `maximum` is the maximum acceptable value of y to be applied to the target. If `enabled` is true, vertical dragging is allowed.