Spec-Zone.ru › Qt 6.0

Тип QML MultiPointHandler

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

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

PointerDeviceHandler

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

DragHandler и PinchHandler

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

Свойства

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

Сигналы

  • 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")
   }
}

Если вы установите 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 : флаги

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

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

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

Постоянная Описание
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, что позволяет большинству сценариев захвата, но избегает, например, двух PinchHandlers, борющихся за одни и те же точки касания.

margin : real

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

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

maximumPointCount : int

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

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

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

Значение по умолчанию совпадает со значением minimumPointCount.

minimumPointCount : int

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

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

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

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

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

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

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

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.0/qml-qtquick-multipointhandler.html

Spec-Zone.ru

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