Spec-Zone.ru › Qt 5.12

Тип QML PointerDeviceHandler

Абстрактный обработчик событий указателя с ограничениями, специфичными для устройства. Подробнее...

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

PointerHandler

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

MultiPointHandler и SinglePointHandler

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

Свойства

  • acceptedButtons : флаги
  • acceptedDevices : флаги
  • acceptedModifiers : флаги
  • acceptedPointerTypes : флаги
  • active : bool
  • enabled : bool
  • grabPermissions : флаги
  • margin : вещественное число
  • parent : Элемент
  • target : Элемент

Сигналы

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

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

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

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

acceptedButtons : флаги

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

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

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

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

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

acceptedDevices : флаги

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

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

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

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

acceptedModifiers : флаги

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

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

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

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

acceptedPointerTypes : флаги

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

По умолчанию это свойство установлено в 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

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

enabled : bool

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

grabPermissions : флаги

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

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

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

margin : real

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

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

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

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

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

target : Item

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

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

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

canceled(EventPoint point)

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

grabChanged(GrabTransition transition, EventPoint point)

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

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

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

Spec-Zone.ru

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