Spec-Zone.ru › Qt

Тип QML HoverHandler

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

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

SinglePointHandler

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

Свойства

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

Сигналы

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

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

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

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

Свойство cursorShape позволяет изменять форму курсора всякий раз, когда hovered изменяется на true.

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

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

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

[с 5.15] cursorShape : Qt::CursorShape

Это свойство содержит форму курсора, которая будет появляться всякий раз, когда hovered равно 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

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

Если какой-либо обработчик с определенной cursorShape активен, будет отображаться этот курсор. В противном случае, если у HoverHandler определена cursorShape, будет отображаться этот курсор. В противном случае будет отображаться курсор элемента parent.

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

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

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

[с 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 борются за одни и те же точки касания.

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

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

margin : real

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

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

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

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

Примечание: Когда обработчик объявлен в объекте QtQuick3D.Model, родитель не является элементом Item, поэтому это свойство null.

См. также 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.2/qml-qtquick-hoverhandler.html

Spec-Zone.ru

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