Класс QTabletEvent
Класс QTabletEvent содержит параметры, описывающие событие планшета. Подробнее...
| Заголовок: | #include <QTabletEvent> |
| qmake: | QT += gui |
| Наследует: | QInputEvent |
Типы публичного доступа
| перечисление | PointerType { UnknownPointer, Pen, Cursor, Eraser } |
| перечисление | TabletDevice { NoDevice, Puck, Stylus, Airbrush, FourDMouse, RotationStylus } |
Функции публичного доступа
| QTabletEvent(QEvent::Type type, const QPointF &pos, const QPointF &globalPos, int device, int pointerType, qreal pressure, int xTilt, int yTilt, qreal tangentialPressure, qreal rotation, int z, Qt::KeyboardModifiers keyState, qint64 uniqueID, Qt::MouseButton button, Qt::MouseButtons buttons) | |
| Qt::MouseButton | button() const |
| Qt::MouseButtons | buttons() const |
| QTabletEvent::TabletDevice | device() const |
| QPoint | globalPos() const |
| const QPointF & | globalPosF() const |
| int | globalX() const |
| int | globalY() const |
| const QPointF & | hiResGlobalPos() const |
| qreal | hiResGlobalX() const |
| qreal | hiResGlobalY() const |
| QTabletEvent::PointerType | pointerType() const |
| QPoint | pos() const |
| const QPointF & | posF() const |
| qreal | pressure() const |
| qreal | rotation() const |
| qreal | tangentialPressure() const |
| qint64 | uniqueId() const |
| int | x() const |
| int | xTilt() const |
| int | y() const |
| int | yTilt() const |
| int | z() const |
- 2 функции публичного доступа унаследованы от QInputEvent
- 7 функций публичного доступа унаследованы от QEvent
Дополнительные унаследованные члены
- 1 свойство унаследовано от QEvent
- 1 публичная переменная унаследована от QEvent
- 1 статическая публичная переменная унаследована от QEvent
- 2 защищённые переменные унаследованы от QEvent
Подробное описание
Класс QTabletEvent содержит параметры, описывающие событие планшета.
События планшета генерируются периферийными устройствами планшета, такими как планшеты Wacom и различные другие марки, а также электромагнитными стилусами, входящими в состав некоторых типов планшетных компьютеров. (Это не то же самое, что QTouchEvent, которое генерирует сенсорный экран, даже если используется пассивный стилус на сенсорном экране.)
События планшета похожи на события мыши; например, методы x(), y(), pos(), globalX(), globalY() и globalPos() предоставляют положение курсора, и вы можете увидеть, какие buttons() нажаты (нажатие наконечника стилуса на поверхность планшета эквивалентно нажатию левой кнопки мыши). Но события планшета также передают некоторую дополнительную информацию, предоставляемую драйвером устройства планшета; например, вы можете захотеть выполнить подпиксельное рендерирование с координатами более высокого разрешения (hiResGlobalX() и hiResGlobalY()), отрегулировать яркость цвета на основе pressure() инструмента на поверхности планшета, использовать разные кисти в зависимости от типа используемого инструмента (device()), модулировать форму кисти каким-либо образом в соответствии с наклоном инструмента по осям X и Y относительно поверхности планшета (xTilt() и yTilt()), и использовать виртуальную стирающую резинку вместо кисти, если пользователь переключается на другой конец двойного стилуса (pointerType()).
Каждое событие содержит флаг приема, который указывает, хочет ли получатель событие. Вы должны вызвать QTabletEvent::accept(), если вы обрабатываете событие планшета; в противном случае оно будет отправлено родительскому виджету. Исключение составляют события TabletEnterProximity и TabletLeaveProximity: они отправляются только в QApplication и не проверяют, принимаются они или нет.
Функция QWidget::setEnabled() может использоваться для включения или отключения событий мыши, планшета и клавиатуры для виджета.
Обработчик событий QWidget::tabletEvent() получает события TabletPress, TabletRelease и TabletMove. Qt сначала отправит событие планшета, а затем, если оно не будет принято ни одним виджетом, отправит событие мыши. Это позволяет пользователям приложений, которые не разработаны для планшетов, использовать планшет как мышь. Однако приложения для рисования с высоким разрешением должны обрабатывать события планшета, потому что они могут возникать с большей частотой, что является преимуществом для плавного и точного рисования. Если события планшета отклоняются, синтетические события мыши могут быть сжаты для повышения эффективности.
В Qt 5.4: QTabletEvent включает всю доступную информацию с устройства, включая QTabletEvent::buttons(). Ранее нельзя было принять все события планшета и также знать, какие кнопки стилуса нажаты.
Обратите внимание, что нажатие кнопки стилуса, когда стилус находится над планшетом, может генерировать нажатие кнопки на некоторых типах планшетов, в то время как на других типах планшетов необходимо нажать стилус на поверхность планшета, чтобы зарегистрировать одновременное нажатие кнопки стилуса.
Примечания для пользователей X11
Если планшет настроен в xorg.conf для использования драйвера Wacom, будут отдельные устройства XInput для стилуса, стирающей резинки и (по желанию) курсора и сенсорной панели. Qt распознает их по их именам. В противном случае, если планшет настроен для использования драйвера evdev, будет только одно устройство, и приложения могут не иметь возможности отличить стилус от стирающей резинки.
Примечания для пользователей Windows
Поддержка планшетов в настоящее время требует установки драйвера WACOM windows, предоставляющего DLL wintab32.dll . Он входит в более старые пакеты, например pentablet_5.3.5-3.exe.
Документация по типам членов
перечисление QTabletEvent::PointerType
Это перечисление определяет тип точки, генерирующей событие.
| Константа | Значение | Описание |
|---|---|---|
QTabletEvent::UnknownPointer |
0 |
Неизвестное устройство. |
QTabletEvent::Pen |
1 |
Конец наконечника стилуса (узкий конец пера). |
QTabletEvent::Cursor |
2 |
Любое устройство, напоминающее планшет. |
QTabletEvent::Eraser |
3 |
Резиновая насадка стилуса (широкий конец пера). |
См. также pointerType().
enum QTabletEvent::TabletDevice
Этот перечисление определяет тип устройства, генерирующего событие.
| Константа | Значение | Описание |
|---|---|---|
QTabletEvent::NoDevice |
0 |
Отсутствует устройство или неизвестное устройство. |
QTabletEvent::Puck |
1 |
Планшет (устройство, подобное плоской мыши с прозрачным кругом и перекрестьем). |
QTabletEvent::Stylus |
2 |
Стилус. |
QTabletEvent::Airbrush |
3 |
Аэрографическое устройство. |
QTabletEvent::FourDMouse |
4 |
Мышь 4D. |
QTabletEvent::RotationStylus |
6 |
Специальный стилус, который также знает о вращении (стилус 6D). |
Это перечисление было введено или изменено в Qt 4.1.
Документация функций-членов
QTabletEvent::QTabletEvent(QEvent::Type type, const QPointF &pos, const QPointF &globalPos, int device, int pointerType, qreal pressure, int xTilt, int yTilt, qreal tangentialPressure, qreal rotation, int z, Qt::KeyboardModifiers keyState, qint64 uniqueID, Qt::MouseButton button, Qt::MouseButtons buttons)
Создает событие взаимодействия с планшетным устройством заданного типа type.
Параметр pos указывает, где произошло событие в виджете; globalPos — соответствующая позиция в абсолютных координатах.
pressure содержит давление, приложенное к device.
pointerType описывает тип используемого пера.
xTilt и yTilt содержат угол наклона устройства относительно осей x и y соответственно.
keyState определяет нажатые модификаторы клавиатуры (например, Ctrl).
Параметр uniqueID содержит уникальный идентификатор текущего устройства.
Параметр z содержит координату устройства на планшетной поверхности, обычно задаётся колесом на мыши 4D. Если устройство не поддерживает ось Z, передайте ноль.
Параметр tangentialPressure содержит тангенциальное давление аэрографического устройства. Если устройство не поддерживает тангенциальное давление, передайте 0.
rotation содержит угол поворота устройства в градусах. Мыши 4D, графические планшеты Wacom Art Pen и Apple Pencil поддерживают поворот. Если устройство не поддерживает поворот, передайте 0.
Кнопка, вызвавшая событие, задаётся значением из перечисления Qt::MouseButton. Если тип события type не TabletPress или TabletRelease, соответствующая кнопка для этого события — Qt::NoButton.
buttons — состояние всех кнопок в момент события.
См. также pos(), globalPos(), device(), pressure(), xTilt(), yTilt(), uniqueId(), rotation(), tangentialPressure() и z().
Qt::MouseButton QTabletEvent::button() const
Возвращает кнопку, вызвавшую событие.
Обратите внимание, что возвращаемое значение всегда Qt::NoButton для событий TabletMove, TabletEnterProximity и TabletLeaveProximity.
См. также buttons() и Qt::MouseButton.
Qt::MouseButtons QTabletEvent::buttons() const
Возвращает состояние кнопок в момент генерации события. Состояние кнопок — комбинация кнопок из перечисления Qt::MouseButton с использованием оператора ИЛИ. Для событий TabletMove это все нажатые кнопки. Для событий TabletPress это включает кнопку, вызвавшую событие. Для событий TabletRelease это исключает кнопку, вызвавшую событие.
См. также button() и Qt::MouseButton.
QTabletEvent::TabletDevice QTabletEvent::device() const
Возвращает тип устройства, сгенерировавшего событие.
См. также TabletDevice.
QPoint QTabletEvent::globalPos() const
Возвращает глобальную позицию устройства в момент события. Это важно на асинхронных системных платформах, таких как X11; при перемещении виджетов в ответ на события мыши globalPos() может значительно отличаться от текущей позиции QCursor::pos().
См. также globalX(), globalY() и hiResGlobalPos().
const QPointF &QTabletEvent::globalPosF() const
Возвращает глобальную позицию устройства в момент события. Это важно на асинхронных системных платформах, таких как X11; при перемещении виджетов в ответ на события мыши globalPosF() может значительно отличаться от текущей позиции QCursor::pos().
См. также posF().
int QTabletEvent::globalX() const
Возвращает глобальную x-координату указателя мыши в момент события.
См. также globalY(), globalPos() и hiResGlobalX().
int QTabletEvent::globalY() const
Возвращает глобальную y-координату устройства планшетного компьютера в момент события.
См. также globalX(), globalPos() и hiResGlobalY().
const QPointF &QTabletEvent::hiResGlobalPos() const
Высокоточные координаты, полученные от планшетного устройства. Информация о субпикселях содержится в дробной части QPointF.
См. также globalPos(), hiResGlobalX() и hiResGlobalY().
qreal QTabletEvent::hiResGlobalX() const
Высокоточная x-координата планшетного устройства.
qreal QTabletEvent::hiResGlobalY() const
Высокоточная y-координата планшетного устройства.
QTabletEvent::PointerType QTabletEvent::pointerType() const
Возвращает тип точки, сгенерировавшей событие.
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 устройства относительно виджета, получившего событие.
int QTabletEvent::xTilt() const
Возвращает угол между устройством (например, пером) и перпендикуляром в направлении оси x. Положительные значения соответствуют правому физическому краю планшета. Угол находится в диапазоне от -60 до +60 градусов.
См. также yTilt().
int QTabletEvent::y() const
Возвращает координату y устройства относительно виджета, получившего событие.
int QTabletEvent::yTilt() const
Возвращает угол между устройством (например, пером) и перпендикуляром в направлении оси y. Положительные значения соответствуют нижней части планшета. Угол находится в диапазоне от -60 до +60 градусов.
См. также xTilt().
int 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/archives/qt-5.11/qtabletevent.html