Spec-Zone.ru › Qt 5.15

Тип QML SinglePointHandler

Абстрактный обработчик событий Pointer для одного указателя. Подробнее...

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

PointerDeviceHandler

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

HoverHandler, PointHandler, TapHandler и WheelHandler

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

Свойства

  • acceptedButtons : флаги
  • acceptedDevices : флаги
  • acceptedModifiers : флаги
  • acceptedPointerTypes : флаги
  • active : bool
  • cursorShape : Qt::CursorShape
  • dragThreshold : int
  • enabled : bool
  • grabPermissions : флаги
  • margin : вещественное число
  • parent : Item
  • point : HandlerPoint
  • target : Item

Сигналы

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

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

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

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

acceptedButtons : флаги

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

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

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

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

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

acceptedDevices : флаги

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

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

Если вы установите 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 командной строкой). Должна быть нажата клавиша переключения режима на клавиатуре.
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 : флаги

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

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

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

cursorShape : Qt::CursorShape

Это свойство содержит форму курсора, которая будет отображаться, когда указатель мыши наведён на родительский элемент, а свойство 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

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

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

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

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

dragThreshold : int

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

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

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

enabled : bool

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

grabPermissions : флаги

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

Константа Описание
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

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

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

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

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

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

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

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

target : Item

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

По умолчанию он такой же, как и parent, элемент, в котором объявлен обработчик. Однако иногда бывает полезно установить целевой элемент на другой элемент, чтобы обрабатывать события внутри одного элемента, но управлять другим; или 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-5.15/qml-qtquick-singlepointhandler.html

Spec-Zone.ru

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