Класс QTabletEvent
Класс QTabletEvent содержит параметры, описывающие событие планшета. Подробнее...
| Заголовок: | #include <QTabletEvent> |
| CMake: | find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| Наследуется от: | QSinglePointEvent |
Открытые функции
| QTabletEvent(QEvent::Type type, const QPointingDevice *dev, const QPointF &pos, const QPointF &globalPos, qreal pressure, float xTilt, float yTilt, float tangentialPressure, qreal rotation, float z, Qt::KeyboardModifiers keyState, Qt::MouseButton button, Qt::MouseButtons buttons) | |
| QPoint | globalPos() const |
| const QPointF | globalPosF() const |
| int | globalX() const |
| int | globalY() const |
| QPoint | pos() const |
| const QPointF | posF() const |
| qreal | pressure() const |
| qreal | rotation() const |
| qreal | tangentialPressure() const |
| qint64 | uniqueId() const |
| int | x() const |
| qreal | xTilt() const |
| int | y() const |
| qreal | yTilt() const |
| qreal | z() const |
Подробное описание
События планшета генерируются периферийными устройствами планшетов, такими как планшеты Wacom и другие бренды, а также электромагнитными стилусами, включёнными в некоторые типы планшетных компьютеров. (Это не то же самое, что QTouchEvent, которое генерирует сенсорный экран, даже при использовании пассивного стилуса на сенсорном экране.)
События планшета похожи на события мыши; например, аксессоры x(), y(), pos(), globalX(), globalY() и globalPos() предоставляют положение курсора, и вы можете видеть, какие кнопки() нажаты (нажатие наконечника стилуса на поверхность планшета эквивалентно нажатию левой кнопки мыши). Но события планшета также передают дополнительную информацию, предоставляемую драйвером устройства планшета; например, вы можете захотеть выполнить рендеринг с субпиксельной точностью с координатами более высокого разрешения (globalPosF()), настроить яркость цвета на основе давления() инструмента на поверхность планшета, использовать разные кисти в зависимости от типа используемого инструмента (deviceType()), модулировать форму кисти каким-либо образом в зависимости от наклона инструмента по осям X и Y относительно поверхности планшета (xTilt() и yTilt()), и использовать виртуальную ластику вместо кисти, если пользователь переключается на другой конец двухстороннего стилуса (pointerType()).
Каждое событие содержит флаг принятия, который указывает, хочет ли получатель событие. Вы должны вызвать QTabletEvent::accept(), если обрабатываете событие планшета; в противном случае оно будет отправлено родительскому виджету. Исключение составляют события TabletEnterProximity и TabletLeaveProximity: они отправляются только в QApplication и не проверяют, приняты ли они.
Функция QWidget::setEnabled() может использоваться для включения или выключения событий мыши, планшета и клавиатуры для виджета.
Обработчик событий QWidget::tabletEvent() получает события TabletPress, TabletRelease и TabletMove. Qt сначала отправит событие планшета, а затем, если оно не будет принято ни одним виджетом, отправит событие мыши. Это позволяет пользователям приложений, не предназначенных для планшетов, использовать планшет как мышь. Однако приложения для рисования с высоким разрешением должны обрабатывать события планшета, потому что они могут возникать с большей частотой, что полезно для плавного и точного рисования. Если события планшета отклоняются, синтетические события мыши могут сжиматься для повышения эффективности.
Обратите внимание, что нажатие кнопки стилуса, когда стилус находится над планшетом, сгенерирует нажатие кнопки на некоторых типах планшетов, в то время как на других типах необходимо нажать стилус на поверхность планшета для регистрации одновременного нажатия кнопки стилуса.
Примечания для пользователей X11
Если планшет настроен в xorg.conf для использования драйвера Wacom, для стилуса, ластика и (по желанию) курсора и сенсорной панели будут отдельные устройства XInput. Qt распознаёт их по именам. В противном случае, если планшет настроен для использования драйвера evdev, будет только одно устройство, и приложения могут не иметь возможности отличить стилус от ластика.
Примечания для пользователей Windows
Поддержка планшетов в настоящее время требует установки драйвера WACOM для Windows, предоставляющего DLL wintab32.dll. Он содержится в более старых пакетах, например pentablet_5.3.5-3.exe.
Документация по функциям-членам
QTabletEvent::QTabletEvent(QEvent::Type type, const QPointingDevice *dev, const QPointF &pos, const QPointF &globalPos, qreal pressure, float xTilt, float yTilt, float tangentialPressure, qreal rotation, float z, Qt::KeyboardModifiers keyState, Qt::MouseButton button, Qt::MouseButtons buttons)
Создаёт событие планшета заданного типа type.
Параметр pos указывает, где произошло событие в виджете; globalPos — соответствующее положение в абсолютных координатах.
pressure — сила давления на устройство dev.
xTilt и yTilt указывают угол наклона устройства относительно осей x и y соответственно.
keyState определяет, какие модификаторы клавиатуры нажаты (например, Ctrl).
Параметр z задаёт координату Z устройства на планшете; обычно это значение предоставляется колесом на мыши 4D. Если устройство не поддерживает ось Z (т. е. QPointingDevice::capabilities() не включает ZPosition), передайте 0 сюда.
Параметр tangentialPressure задаёт значение поворотного регулятора касательного давления от аэрографа. Если устройство не поддерживает касательное давление (т. е. QPointingDevice::capabilities() не включает TangentialPressure), передайте 0 сюда.
rotation указывает угол поворота устройства в градусах. Мыши 4D, планшетный стилус Wacom Art Pen и Apple Pencil поддерживают поворот. Если устройство не поддерживает поворот (т. е. QPointingDevice::capabilities() не включает Rotation), передайте 0 сюда.
Кнопка button, вызвавшая событие, задаётся значением из перечисления Qt::MouseButton. Если тип события type не равен TabletPress или TabletRelease, соответствующая кнопка для данного события — Qt::NoButton.
buttons — состояние всех кнопок в момент события.
См. также pos(), globalPos(), device(), pressure(), xTilt(), yTilt(), uniqueId(), rotation(), tangentialPressure(), и z().
QPoint QTabletEvent::globalPos() const
Возвращает глобальное положение устройства в момент события. Это важно в асинхронных системных средах, таких как X11; всякий раз, когда вы перемещаете свои виджеты в ответ на события мыши, globalPos() может значительно отличаться от текущего положения QCursor::pos().
См. также globalX() и globalY().
const QPointF QTabletEvent::globalPosF() const
Возвращает глобальное положение устройства в момент события. Это важно в асинхронных системных средах, таких как X11; всякий раз, когда вы перемещаете свои виджеты в ответ на события мыши, globalPosF() может значительно отличаться от текущего положения QCursor::pos().
См. также posF().
int QTabletEvent::globalX() const
Возвращает глобальную x-координату курсора мыши в момент события.
См. также globalY() и globalPos().
int QTabletEvent::globalY() const
Возвращает глобальную y-координату планшетного устройства в момент события.
См. также globalX() и globalPos().
QPoint QTabletEvent::pos() const
Возвращает положение устройства относительно виджета, получившего событие.
Если вы перемещаете виджеты в ответ на события мыши, используйте globalPos() вместо этой функции.
См. также x(), y() и globalPos().
const QPointF QTabletEvent::posF() const
Возвращает положение устройства относительно виджета, получившего событие.
Если вы перемещаете виджеты в ответ на события мыши, используйте globalPosF() вместо этой функции.
См. также globalPosF().
qreal QTabletEvent::pressure() const
Возвращает значение давления для устройства. 0.0 указывает, что стилус не находится на планшете, 1.0 указывает максимальное значение давления для стилуса.
См. также tangentialPressure().
qreal QTabletEvent::rotation() const
Возвращает угол поворота текущего инструмента в градусах, где ноль означает, что наконечник стилуса направлен к верхней части планшета, положительное значение означает, что он повернут вправо, а отрицательное — влево. Это может быть предоставлено 4D-мышкой или стилусом с возможностью поворота (например, Wacom Art Pen или Apple Pencil). Если устройство не поддерживает поворот, это значение всегда равно 0,0.
qreal QTabletEvent::tangentialPressure() const
Возвращает тангенциальное давление для устройства. Обычно это предоставляет колесо на инструменте типа аэрографического маркера. Диапазон от -1,0 до 1,0. 0,0 указывает нейтральное положение. Современные аэрографы могут перемещаться только в положительном направлении от нейтральной позиции. Если устройство не поддерживает тангенциальное давление, это значение всегда равно 0,0.
Примечание: Значение хранится как число с плавающей запятой одинарной точности.
См. также pressure().
qint64 QTabletEvent::uniqueId() const
Возвращает уникальный идентификатор для текущего устройства, позволяя различать несколько устройств, используемых одновременно на планшете.
Поддержка этой функции зависит от планшета.
Значения для одного и того же устройства могут отличаться в зависимости от ОС.
Более поздние версии драйвера Wacom для Linux теперь будут сообщать информацию об идентификаторе. Если у вас есть планшет, поддерживающий уникальный идентификатор, и вы не получаете эту информацию в Linux, рассмотрите обновление драйвера.
Начиная с Qt 4.2, уникальный идентификатор одинаков независимо от ориентации пера. Более ранние версии сообщали различное значение при использовании наконечника ластика или наконечника пера на некоторых ОС.
См. также pointerType().
int QTabletEvent::x() const
Возвращает x-координату устройства относительно виджета, получившего событие.
qreal QTabletEvent::xTilt() const
Возвращает угол между устройством (например, пером) и перпендикуляром в направлении оси x. Положительные значения — в сторону физической правой части планшета. Угол находится в диапазоне от -60 до +60 градусов.
Примечание: Значение хранится как число с плавающей запятой одинарной точности.
См. также yTilt().
int QTabletEvent::y() const
Возвращает y-координату устройства относительно виджета, получившего событие.
qreal QTabletEvent::yTilt() const
Возвращает угол между устройством (например, пером) и перпендикуляром в направлении оси y. Положительные значения — в сторону нижней части планшета. Угол находится в диапазоне от -60 до +60 градусов.
Примечание: Значение хранится как число с плавающей запятой одинарной точности.
См. также xTilt().
qreal QTabletEvent::z() const
Возвращает z-координату устройства. Обычно это представляется колесом на 4D-мыши. Если устройство не поддерживает ось Z, это значение всегда равно нулю. Это не то же самое, что и давление.
Примечание: Значение хранится как число с плавающей запятой одинарной точности.
См. также pressure().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qtabletevent.html