Spec-Zone.ru › Qt 5.14

Тип QML MultiPointHandler

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

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

PointerDeviceHandler

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

DragHandler и PinchHandler

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

Свойства

  • acceptedButtons : flags
  • acceptedDevices : flags
  • acceptedModifiers : flags
  • acceptedPointerTypes : flags
  • active : bool
  • centroid : QtQuick::HandlerPoint
  • enabled : bool
  • grabPermissions : flags
  • margin : real
  • maximumPointCount : int
  • minimumPointCount : int
  • parent : Item
  • target : Item

Сигналы

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

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

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

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

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

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

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

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

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

maximumPointCount : int

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

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

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

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

minimumPointCount : int

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

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

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

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

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

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

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

target : Item

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

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

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

canceled(point)

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

grabChanged(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.14/qml-qtquick-multipointhandler.html

Spec-Zone.ru

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