Класс 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
- 6 открытых функций унаследованы от QEvent
Статические открытые члены
| const QMetaObject | staticMetaObject |
- 1 статический открытый член унаследован от QEvent
Защищенные переменные
| int | mDev |
| void * | mExtra |
| QPointF | mGPos |
| int | mPointerType |
| QPointF | mPos |
| qreal | mPress |
| qreal | mRot |
| qreal | mTangential |
| qint64 | mUnique |
| int | mXT |
| int | mYT |
| int | mZ |
Дополнительные унаследованные члены
- 1 свойство унаследовано от QEvent
Подробное описание
Класс QTabletEvent содержит параметры, описывающие событие планшета.
События планшета генерируются периферийными устройствами планшета, такими как планшеты Wacom и различными другими брендами, а также электромагнитными стилусами, включенными в некоторые типы планшетных компьютеров. (Это не то же самое, что QTouchEvent, который генерируется сенсорным экраном, даже если на сенсорном экране используется пассивный стилус.)
События планшета аналогичны событиям мыши; например, аксессоры x(), y(), pos(), globalX(), globalY() и globalPos() предоставляют положение курсора, и вы можете увидеть, какие buttons() нажаты (нажатие наконечника стилуса на поверхность планшета эквивалентно нажатию левой кнопки мыши). Но события планшета также передают некоторую дополнительную информацию, которую предоставляет драйвер устройства планшета; например, вы можете захотеть выполнить рендеринг с субпиксельной точностью с координатами более высокого разрешения (hiResGlobalX() и hiResGlobalY()), отрегулировать яркость цвета на основе pressure() инструмента на поверхности планшета, использовать разные кисти в зависимости от типа инструмента (device()), каким-то образом изменять форму кисти в соответствии с наклоном инструмента по оси X и Y относительно поверхности планшета (xTilt() и yTilt()), и использовать виртуальную стирательную резинку вместо кисти, если пользователь переключается на другой конец двойного стилуса (pointerType()).
Каждое событие содержит флаг accept, который указывает, хочет ли получатель событие. Вы должны вызвать QTabletEvent::accept(), если вы обрабатываете событие планшета; в противном случае оно будет отправлено родительскому виджету. Исключение составляют события TabletEnterProximity и TabletLeaveProximity: они отправляются только в QApplication и не проверяют, приняты ли они или нет.
Функция QWidget::setEnabled() может использоваться для включения или выключения событий мыши, планшета и клавиатуры для виджета.
Обработчик событий QWidget::tabletEvent() получает события TabletPress, TabletRelease и TabletMove. Qt сначала отправит событие планшета, а затем, если оно не будет принято ни одним виджетом, отправит событие мыши. Это позволяет пользователям приложений, не предназначенных для планшетов, использовать планшет как мышь. Однако приложения для рисования высокого разрешения должны обрабатывать события планшета, так как они могут возникать с большей частотой, что выгодно для плавного и точного рисования. Если события планшета отклоняются, синтезированные события мыши могут сжиматься для повышения эффективности.
END_OF_DOCUMENT_MARKERНовое в 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.
Документация по типам членов
enum 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 и Apple Pencil поддерживают вращение. Если устройство не поддерживает вращение, передайте 0.
Кнопка button, которая вызвала событие, задается как значение из перечисления 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/qt-5.12/qtabletevent.html