Spec-Zone.ru › Qt 5.14

Тип QML HoverHandler

Обработчик наведения курсора мыши и планшета. Подробнее...

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

SinglePointHandler

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

Свойства

  • acceptedButtons : flags
  • acceptedDevices : flags
  • acceptedModifiers : flags
  • acceptedPointerTypes : flags
  • active : bool
  • enabled : bool
  • grabPermissions : flags
  • hovered : bool
  • margin : real
  • parent : Item
  • point : HandlerPoint
  • target : Item

Сигналы

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

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

HoverHandler обнаруживает курсор мыши или планшета, наведённый на объект.

Связывание со свойством hovered — самый простой способ реагировать на вход или выход курсора в/из элемент parent. Свойство point предоставляет больше деталей, включая позицию курсора. Свойства acceptedDevices, acceptedPointerTypes и acceptedModifiers позволяют сузить поведение, чтобы обнаруживать наведение курсора определённых типов устройств или при нажатой клавише модификатора.

См. также MouseArea и PointHandler.

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

acceptedButtons : flags

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

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

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

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

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

acceptedDevices : flags

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

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

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

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

[только для чтения] hovered : bool

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

margin : real

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

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

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

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

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

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

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

target : Item

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

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

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

canceled(point)

Если этот обработчик уже захватил указанную 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-hoverhandler.html

Spec-Zone.ru

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