Spec-Zone.ru › Qt 5.15

Тип QML MultiPointHandler

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

Оператор импорта: import QtQuick 2.15
С тех пор: 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. Если вы установите его в OR-комбинацию типов устройств, он будет игнорировать события от несовпадающих устройств.

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

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 в OR-комбинацию клавиш модификаторов, это означает, что все эти модификаторы должны быть нажаты для активации обработчика:

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. Если вы установите его в OR-комбинацию типов устройств, он будет игнорировать события от несовпадающих событий.

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

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

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

Точка, находящаяся точно посередине нажатых касаний. Если нажата только одна точка, это та же точка. Обработчик, у которого есть 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

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

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

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

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

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 Этот обработчик предоставляет разрешение любому элементу (Item) захватить захват.
PointerHandler.ApprovesCancellation Этот обработчик позволит установить его захват в значение null.
PointerHandler.ApprovesTakeOverByAnything Этот обработчик предоставляет разрешение любому элементу или обработчику любого типа захватить захват.

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

margin : real

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

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

maximumPointCount : int

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

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

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

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

minimumPointCount : int

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

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

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

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

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

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

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

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-multipointhandler.html

Spec-Zone.ru

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