Класс 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 |
| 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 |
Подробное описание
События планшета генерируются периферийными устройствами планшета, такими как планшеты 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 сначала отправит событие планшета, а затем, если оно не будет принято каким-либо виджетом, отправит событие мыши. Это позволяет пользователям приложений, которые не предназначены для планшетов, использовать планшет как мышь. Однако приложения для рисования с высоким разрешением должны обрабатывать события планшета, поскольку они могут возникать с большей частотой, что выгодно для плавного и точного рисования. Если события планшета отклоняются, синтетические события мыши могут быть сжаты для повышения эффективности.
Добавлено в 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().
Перечисление 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.
Кнопка 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().
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().
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
Возвращает уникальный идентификатор текущего устройства, позволяющий различать несколько устройств, используемых одновременно на планшете.
Поддержка этой функции зависит от планшета.
Значения для одного и того же устройства могут различаться в зависимости от ОС.
END_OF_DOCUMENT_MARKERБолее поздние версии драйвера 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.14/qtabletevent.html