QTabletEvent 类

QTabletEvent 类包含数位板事件的描述参数。 更多...

头: #include <QTabletEvent>
qmake: QT += gui
继承: QInputEvent

公共类型

enum PointerType { UnknownPointer, Pen, Cursor, Eraser }
enum 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 deviceType () const
QPoint globalPos () const
const QPointF & globalPosF () const
int globalX () const
int globalY () 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 () 被按下 (将手写笔尖端按在数位板表面相当于鼠标左键)。但数位板事件还传递数位板设备驱动程序提供的一些额外信息;例如,可能想要做更高分辨率坐标的亚像素渲染 ( globalPosF ()),调节颜色亮度基于 pressure () 将工具紧靠数位板表面,使用不同笔刷根据使用中的工具类型 ( deviceType ()),以某种方式调节笔刷形状根据工具相对数位板表面 X 轴和 Y 轴的倾斜 ( xTilt () 和 yTilt ()),及使用虚拟橡皮擦而不是笔刷若用户切换到双端手写笔的另一端 ( pointerType ()).

每个事件均包含接受标志,指示接收者是否想要此事件。应该调用 QTabletEvent::accept () 若处理数位板事件;否则,它会被发送给父级 Widget。例外情况是 TabletEnterProximity and TabletLeaveProximity 事件:这些只发送给 QApplication 且不校验它们是否被接受。

The QWidget::setEnabled () 函数可以用于启用/禁用 Widget 的鼠标、数位板及键盘事件。

事件处理程序 QWidget::tabletEvent () 接收 TabletPress , TabletRelease and TabletMove 事件。Qt 首先会发送数位板事件,然后若事件不被任何 Widget 所接受,它会发送鼠标事件。这允许并非为数位板设计的应用程序用户,像鼠标一样使用数位板。不管怎样,高分辨率绘图应用程序应该处理数位板事件,因为它们出现的频率会更高,对平滑且准确的绘图有好处。若数位板事件被拒绝,则可以压缩合成鼠标事件以提高效率。

New in Qt 5.4: QTabletEvent includes all information available from the device, including 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 .

The pos 参数指示事件发生在 Widget 中哪里; globalPos 是绝对坐标对应位置。

pressure 包含的压力施加于 device .

pointerType 描述正在使用的笔类型。

xTilt and yTilt 分别包含设备相对 X 轴和 Y 轴的倾斜度。

keyState 指定按下了哪个键盘修饰符 (如 Ctrl ).

The uniqueID 参数包含当前设备的唯一 ID。

The z 参数包含数位板设备的坐标,这通常由 4D 鼠标滚轮给出。若设备不支持 Z 轴,此处传递 0。

The tangentialPressure 参数包含空气刷的切向压力。若设备不支持切向压力,此处传递 0。

rotation contains the device's rotation in degrees. 4D mice, the Wacom Art Pen, and the Apple Pencil support rotation. If the device does not support rotation, pass 0 here.

The button 导致给定值事件来自 Qt::MouseButton 枚举。若事件 type 不是 TabletPress or TabletRelease ,此事件的相应按钮为 Qt::NoButton .

buttons 是事件发生时的所有按钮状态。

另请参阅 pos (), globalPos (), device (), pressure (), xTilt (), yTilt (), uniqueId (), rotation (), tangentialPressure (),和 z ().

Qt::MouseButton QTabletEvent:: button () const

返回导致事件的按钮。

注意:返回值始终是 Qt::NoButton for TabletMove , TabletEnterProximity and TabletLeaveProximity 事件。

另请参阅 buttons () 和 Qt::MouseButton .

Qt::MouseButtons QTabletEvent:: buttons () const

返回按钮状态,当生成事件时。按钮状态是按钮的组合来自 Qt::MouseButton 枚举使用 OR 运算符。对于 TabletMove 事件,这是被按下的所有按钮。对于 TabletPress 事件,这包括导致事件的按钮。对于 TabletRelease 事件,这排除导致事件的按钮。

另请参阅 button () 和 Qt::MouseButton .

QTabletEvent::TabletDevice QTabletEvent:: deviceType () const

返回生成事件的设备类型。

另请参阅 TabletDevice .

QPoint QTabletEvent:: globalPos () const

返回设备的全局位置 当事件发生时 。这对异步窗口系统 (像 X11) 很重要;每当围绕响应鼠标事件移动 Widget 时,globalPos() 会显著异于当前位置 QCursor::pos ().

另请参阅 globalX () 和 globalY ().

const QPointF &QTabletEvent:: globalPosF () const

返回设备的全局位置 当事件发生时 。这对异步窗口系统 (像 X11) 很重要;每当围绕响应鼠标事件移动 Widget 时,globalPosF() 会显著异于当前位置 QCursor::pos ().

另请参阅 posF ().

int QTabletEvent:: globalX () const

返回事件发生时的鼠标指针全局 X 位置。

另请参阅 globalY (), globalPos (),和 hiResGlobalX ().

int QTabletEvent:: globalY () const

返回事件发生时数位板设备的全局 y 位置。

另请参阅 globalX (), globalPos (),和 hiResGlobalY ().

QTabletEvent::PointerType QTabletEvent:: pointerType () const

返回生成事件的点类型。

QPoint QTabletEvent:: pos () const

返回设备位置,相对接收事件 Widget。

若围绕响应鼠标事件移动 Widget,使用 globalPos () 而不是此函数。

另请参阅 x (), y (),和 globalPos ().

const QPointF &QTabletEvent:: posF () const

返回设备位置,相对接收事件 Widget。

若围绕响应鼠标事件移动 Widget,使用 globalPosF () 而不是此函数。

另请参阅 globalPosF ().

qreal QTabletEvent:: pressure () const

返回设备的压力。0.0 指示手写笔不在数位板中,1.0 指示手写笔的最大压力数。

另请参阅 tangentialPressure ().

qreal QTabletEvent:: rotation () const

Returns the rotation of the current tool in degrees, where zero means the tip of the stylus is pointing towards the top of the tablet, a positive value means it's turned to the right, and a negative value means it's turned to the left. This can be given by a 4D Mouse or a rotation-capable stylus (such as the Wacom Art Pen or the Apple Pencil). If the device does not support rotation, this value is always 0.0.

qreal QTabletEvent:: tangentialPressure () const

返回设备的切向压力。这通常由喷枪工具指轮给出。范围是从 -1.0 到 1.0。0.0 指示中立位置。目前喷枪只可以从中立位置向正值方向移动。若设备不支持切向压力,此值始终为 0.0。

另请参阅 pressure ().

qint64 QTabletEvent:: uniqueId () const

返回当前设备的唯一 ID,使之可能区分数位板中同时使用的多个设备。

此特征的支持从属数位板。

同一设备的值可能因操作系统而异。

更高版本的 Linux Wacom 驱动程序现在会报告 ID 信息。若有支持唯一 ID 的数位板且在 Linux 未获取到信息,考虑升级驱动程序。

从 Qt 4.2 起,唯一 ID 相同不管钢笔取向。早期版本会报告不同值,当在某些 OS 使用手写笔的橡皮擦端和钢笔端时。

另请参阅 pointerType ().

int QTabletEvent:: x () const

返回设备的 x 位置,相对接收事件 Widget。

另请参阅 y () 和 pos ().

int QTabletEvent:: xTilt () const

返回设备 (例如:钢笔) 和 X 轴垂直方向之间的角度。正值朝向数位板物理右侧。角度范围 -60 到 +60 度。

另请参阅 yTilt ().

int QTabletEvent:: y () const

返回设备的 y 位置,相对接收事件 Widget。

另请参阅 x () 和 pos ().

int QTabletEvent:: yTilt () const

返回设备 (例如:钢笔) 和 Y 轴垂直方向之间的角度。正值朝向数位板底部。角度范围 -60 到 +60 度。

另请参阅 xTilt ().

int QTabletEvent:: z () const

返回设备的 Z 位置。通常,这由 4D 鼠标滚轮表示。若设备不支持 Z 轴,此值始终为 0。这是 not 如同压力。

另请参阅 pressure ().