Spec-Zone.ru › Qt

Тип QML MultiPointHandler

Абстрактный обработчик для событий Pointer Events с несколькими точками. Подробнее...

Заявление импорта: import QtQuick
С версии: Qt 5.10
Наследует:

PointerDeviceHandler

Наследуется от:

DragHandler и PinchHandler

  • Список всех членов, включая унаследованные члены

Свойства

  • acceptedButtons : flags
  • acceptedDevices : flags
  • acceptedModifiers : flags
  • acceptedPointerTypes : flags
  • active : bool
  • centroid : QtQuick::HandlerPoint
  • cursorShape : Qt::CursorShape
  • dragThreshold : int
  • enabled : bool
  • grabPermissions : flags
  • margin : real
  • maximumPointCount : int
  • minimumPointCount : int
  • parent : Item
  • target : Item

Сигналы

  • canceled(EventPoint point)
  • grabChanged(GrabTransition transition, EventPoint point)

Подробное описание

Промежуточный класс (не зарегистрированный как тип QML) для любого типа обработчика, который требует и действует на определённое количество многоточечных касаний.

Документация свойств

acceptedButtons : flags

Кнопки мыши, которые могут активировать этот обработчик Pointer Handler.

По умолчанию это свойство установлено в Qt.LeftButton. Оно может быть установлено в комбинацию кнопок мыши, и будет игнорировать события от других кнопок.

Например, элемент управления может реагировать на левые и правые щелчки по-разному, с двумя обработчиками:

Item {
    TapHandler {
        onTapped: console.log("left clicked")
    }
    TapHandler {
        acceptedButtons: Qt.RightButton
        onTapped: console.log("right clicked")
    }
}

Примечание: Нажатие на сенсорный экран или нажатие стилусом на графический планшет эмулирует щелчок левой кнопкой мыши. Это поведение может быть изменено через acceptedDevices или acceptedPointerTypes.

acceptedDevices : flags

Типы указательных устройств, которые могут активировать этот обработчик Pointer Handler.

По умолчанию это свойство установлено в PointerDevice.AllDevices. Если вы установите его в комбинацию типов устройств, то он будет игнорировать события от несовпадающих устройств.

Например, элемент управления может реагировать на щелчки мышью и стилусом одним способом, а на касания пальцем на сенсорном экране — другим способом, с двумя обработчиками:

Item {
   TapHandler {
       acceptedDevices: PointerDevice.Mouse | PointerDevice.Stylus
       onTapped: console.log("clicked")
   }
   TapHandler {
       acceptedDevices: PointerDevice.TouchScreen
       onTapped: console.log("tapped")
   }
}

acceptedModifiers : flags

Если это свойство установлено, то для реагирования на события указателя потребуются нажатые заданные модификаторы клавиатуры, в противном случае они будут игнорироваться.

Если это свойство установлено в Qt.KeyboardModifierMask (значение по умолчанию), то PointerHandler игнорирует клавиши модификаторов.

Например, элемент Item может иметь два обработчика одного типа, один из которых включён только в том случае, если нажаты необходимые клавиши модификаторов:

Item {
   TapHandler {
       acceptedModifiers: Qt.ControlModifier
       onTapped: console.log("control-tapped")
   }
   TapHandler {
       acceptedModifiers: Qt.NoModifier
       onTapped: console.log("tapped")
   }
}

Если вы установите acceptedModifiers в комбинацию клавиш модификаторов, это означает, что все эти модификаторы должны быть нажаты для активации обработчика:

Item {
   TapHandler {
       acceptedModifiers: Qt.ControlModifier | Qt.AltModifier | Qt.ShiftModifier
       onTapped: console.log("control-alt-shift-tapped")
   }
}

Доступные модификаторы следующие:

Константа Описание
NoModifier Ни одна клавиша модификатора не допускается.
ShiftModifier Должна быть нажата клавиша Shift на клавиатуре.
ControlModifier Должна быть нажата клавиша Ctrl на клавиатуре.
AltModifier Должна быть нажата клавиша Alt на клавиатуре.
MetaModifier Должна быть нажата клавиша Meta на клавиатуре.
KeypadModifier Должна быть нажата кнопка на клавиатурной панели.
GroupSwitchModifier Только X11 (если не активировано в Windows с помощью аргумента командной строки). Должна быть нажата клавиша Mode_switch на клавиатуре.
KeyboardModifierMask Обработчик не заботится о нажатых модификаторах.

Если вам нужно более сложное поведение, чем то, которое можно достичь с помощью комбинации нескольких обработчиков с несколькими флагами модификаторов, вы можете проверить модификаторы в коде JavaScript:

Item {
    TapHandler {
        onTapped:
            switch (point.modifiers) {
            case Qt.ControlModifier | Qt.AltModifier:
                console.log("CTRL+ALT");
                break;
            case Qt.ControlModifier | Qt.AltModifier | Qt.MetaModifier:
                console.log("CTRL+META+ALT");
                break;
            default:
                console.log("other modifiers", point.modifiers);
                break;
            }
    }
}

См. также Qt::KeyboardModifier.

acceptedPointerTypes : flags

Типы указательных инструментов (палец, стилус, ластик и т. д.), которые могут активировать этот обработчик Pointer Handler.

По умолчанию это свойство установлено в PointerDevice.AllPointerTypes. Если вы установите его в комбинацию типов устройств, то он будет игнорировать события от несовпадающих событий.

Например, элемент управления может реагировать на щелчки мышью, касаниями и щелчками стилусом каким-либо способом, но удалить себя, если нажать на него ластиком на графическом планшете, с двумя обработчиками:

Rectangle {
   id: rect
   TapHandler {
       acceptedPointerTypes: PointerDevice.GenericPointer | PointerDevice.Finger | PointerDevice.Pen
       onTapped: console.log("clicked")
   }
   TapHandler {
       acceptedPointerTypes: PointerDevice.Eraser
       onTapped: rect.destroy()
   }
}

[только для чтения] active : bool

Это значение истинно всякий раз, когда этот обработчик Input Handler взял на себя полную ответственность за обработку одной или нескольких точек EventPoint, успешно захватив эксклюзивный захват этих точек. Это означает, что он сохраняет свои свойства, обновляя их в соответствии с перемещениями этих точек Event Point и активно манипулируя своим target (если таковой имеется).

[только для чтения] centroid : QtQuick::HandlerPoint

Точка, расположенная точно посередине текущих нажатых точек касания. Если нажата только одна точка, она такая же, как и эта точка. Обработчик, имеющий target, обычно преобразует его относительно этой точки.

[с версии 5.15] cursorShape : Qt::CursorShape

Это свойство содержит форму курсора, которая будет отображаться всякий раз, когда курсор находится над элементом parent, в то время как active равно true.

Доступные формы курсора:

  • Qt.ArrowCursor
  • Qt.UpArrowCursor
  • Qt.CrossCursor
  • Qt.WaitCursor
  • Qt.IBeamCursor
  • Qt.SizeVerCursor
  • Qt.SizeHorCursor
  • Qt.SizeBDiagCursor
  • Qt.SizeFDiagCursor
  • Qt.SizeAllCursor
  • Qt.BlankCursor
  • Qt.SplitVCursor
  • Qt.SplitHCursor
  • Qt.PointingHandCursor
  • Qt.ForbiddenCursor
  • Qt.WhatsThisCursor
  • Qt.BusyCursor
  • Qt.OpenHandCursor
  • Qt.ClosedHandCursor
  • Qt.DragCopyCursor
  • Qt.DragMoveCursor
  • Qt.DragLinkCursor

Значение по умолчанию не задано, что позволяет отображать курсор cursor элемента parent. Это свойство можно сбросить до исходного состояния, установив его в undefined.

Примечание: Когда это свойство не установлено или установлено в undefined, если вы прочтёте значение, оно вернёт Qt.ArrowCursor.

Это свойство было введено в Qt 5.15.

См. также Qt::CursorShape, QQuickItem::cursor() и HoverHandler::cursorShape.

[с версии 5.15] dragThreshold : int

Расстояние в пикселях, на которое пользователь должен перетащить точку события, чтобы оно обрабатывалось как жест перетаскивания.

Значение по умолчанию зависит от платформы и разрешения экрана. Его можно сбросить до значения по умолчанию, установив его в undefined. Поведение при начале жеста перетаскивания различается в разных обработчиках.

Это свойство было введено в Qt 5.15.

enabled : bool

Если PointerHandler отключён, он отклонит все события, и не будет выпущены никакие сигналы.

grabPermissions : flags

Это свойство определяет разрешения при принятии обработчиком логики эксклюзивного захвата или запросе о подтверждении захвата или отмены захвата другим обработчиком.

Константа Описание
PointerHandler.TakeOverForbidden Этот обработчик не получает и не предоставляет разрешение на захват для любого типа элемента или обработчика.
PointerHandler.CanTakeOverFromHandlersOfSameType Этот обработчик может захватить эксклюзивное управление от другого обработчика того же класса.
PointerHandler.CanTakeOverFromHandlersOfDifferentType Этот обработчик может захватить эксклюзивное управление от любого типа обработчика.
PointerHandler.CanTakeOverFromAnything Этот обработчик может захватить эксклюзивное управление от любого типа элемента или обработчика.
PointerHandler.ApprovesTakeOverByHandlersOfSameType Этот обработчик предоставляет разрешение другому обработчику того же класса на захват.
PointerHandler.ApprovesTakeOverByHandlersOfDifferentType Этот обработчик предоставляет разрешение любому типу обработчика на захват.
PointerHandler.ApprovesTakeOverByItems Этот обработчик предоставляет разрешение любому элементу на захват.
PointerHandler.ApprovesCancellation Этот обработчик позволит установить захват в значение null.
PointerHandler.ApprovesTakeOverByAnything Этот обработчик предоставляет разрешение любому элементу или обработчику на захват.

По умолчанию PointerHandler.CanTakeOverFromItems | PointerHandler.CanTakeOverFromHandlersOfDifferentType | PointerHandler.ApprovesTakeOverByAnything, что позволяет большинству сценариев захвата, но избегает, например, конфликтов между двумя обработчиками PinchHandler за те же точки касания.

margin : real

Отступ за пределами границ элемента родитель, в пределах которого точка события может активировать этот обработчик. Например, на обработчике PinchHandler, где target также является parent, полезно установить это значение, по крайней мере, на половину ширины типичного пальца пользователя, чтобы в случае, если parent был масштабирован до очень малого размера, жесты pinch все еще были возможны. Или, если кнопка на основе TapHandler расположена у края экрана, она может использоваться для соответствия закону Фиттса: реагировать на щелчки мыши на краю экрана, даже если кнопка визуально отстоит от края на несколько пикселей.

Значение по умолчанию равно 0.

maximumPointCount : int

Максимальное количество точек касания, которые может использовать этот обработчик.

Если количество точек касания, контактирующих с родителем, больше, то необходимое количество точек будет выбрано в порядке их нажатия, а оставшиеся точки будут проигнорированы.

Любые проигнорированные точки могут активировать другие обработчики ввода, у которых есть разные ограничения, на том же элементе или на других элементах.

Значение по умолчанию такое же, как у minimumPointCount.

minimumPointCount : int

Минимальное количество точек касания, необходимое для активации этого обработчика.

Если количество точек касания, контактирующих с родителем, меньше, они будут проигнорированы.

Любые проигнорированные точки могут активировать другие обработчики ввода, у которых есть разные ограничения, на том же элементе или на других элементах.

Значение по умолчанию равно 2.

[только для чтения] parent : Item

Элемент Item, который является областью действия обработчика; элемент, в котором он был объявлен. Обработчик будет обрабатывать события от имени этого элемента, что означает, что событие указателя актуально, если хотя бы одна из его точек событий находится внутри внутренней области элемента. Изначально target() такое же, но его можно переназначить.

Примечание: Когда обработчик объявлен в объекте QtQuick3D.Model, родитель не является элементом, поэтому это свойство null.

См. также target и QObject::parent().

target : Item

Элемент Item, который будет управлять этим обработчиком.

По умолчанию он такой же, как родитель, элемент, в котором объявлен обработчик. Однако иногда бывает полезно установить целевой элемент на другой элемент, чтобы обрабатывать события внутри одного элемента, но управлять другим; или null, чтобы отключить стандартное поведение и сделать что-то другое вместо этого.

Документация по сигналам

canceled(EventPoint point)

Если этот обработчик уже захватил указанную point, этот сигнал испускается, когда захват украден другим обработчиком указателя или элементом.

Примечание: Соответствующий обработчик onCanceled.

grabChanged(GrabTransition transition, EventPoint point)

Этот сигнал испускается, когда захват изменился каким-либо образом, относящимся к этому обработчику.

transition (глагол) указывает, что произошло. point (объект) — это точка, которая была захвачена или освобождена.

Примечание: Соответствующий обработчик onGrabChanged.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qml-qtquick-multipointhandler.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API