Spec-Zone.ru › Qt 6.1

Тип QML SinglePointHandler

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

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

PointerDeviceHandler

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

HoverHandler, PointHandler, TapHandler и WheelHandler

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

Свойства

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

Сигналы

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

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

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

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

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

Это значение истинно, когда этот обработчик ввода полностью отвечает за обработку одной или нескольких EventPoints, успешно захватив эксклюзивный доступ к этим точкам. Это означает, что он сохраняет свои свойства, соответствующие перемещениям этих Event Points, и активно управляет своим 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

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

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

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

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

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

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

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

target : Item

Элемент Item, который будет изменён этим обработчиком.

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

Spec-Zone.ru

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