QTabletEvent Class
QTabletEvent 类包含描述 Tablet 事件的参数。更多
头文件: | #include <QTabletEvent> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
继承: | QSinglePointEvent |
- 所有成员(包括继承成员)的列表
- 已废弃成员
- 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) | |
qreal | pressure() const |
qreal | rotation() const |
qreal | tangentialPressure() const |
qreal | xTilt() const |
qreal | yTilt() const |
qreal | z() const |
详细说明
平板电脑事件由平板电脑外设(如 Wacom 平板电脑和其他各种品牌的平板电脑)以及某些类型平板电脑中的电磁手写笔设备产生。(它与触摸屏生成的QTouchEvent 不同,即使在触摸屏上使用被动触控笔也是如此)。
平板电脑事件与鼠标事件类似;例如,x(),y(),pos(),globalX(),globalY(), 和globalPos() 访问器提供了光标位置,你可以看到哪些buttons() 被按下(将触控笔笔尖按在平板电脑表面相当于按下鼠标左键)。但平板电脑事件也会传递平板设备驱动程序提供的一些额外信息;例如,您可能希望使用更高分辨率坐标(globalPosF()) 进行子像素渲染,根据工具与平板表面的pressure() 调整颜色亮度,根据使用的工具类型使用不同的笔刷(deviceType()) 、根据工具相对于手写板表面的 X 轴和 Y 轴倾斜度以某种方式调节笔刷形状(xTilt() 和yTilt()),如果用户切换到双头触控笔的另一端,则使用虚拟橡皮擦代替笔刷(pointerType()) 。
每个事件都包含一个接受标志,表示接收方是否需要该事件。如果要处理手写板事件,应调用QTabletEvent::accept() ;否则,事件将被发送到父 widget。TabletEnterProximity 和 TabletLeaveProximity 事件是个例外:这些事件只发送到QApplication ,不会检查是否接受。
QWidget::setEnabled() 函数可用于启用或禁用部件的鼠标、平板电脑和键盘事件。
事件处理程序QWidget::tabletEvent() 会接收 TabletPress、TabletRelease 和 TabletMove 事件。Qt 会首先发送一个平板事件,然后如果没有任何 widget 接受该事件,就会发送一个鼠标事件。这样,非平板电脑应用程序的用户就可以像使用鼠标一样使用平板电脑。不过,高分辨率绘图应用程序应该处理平板电脑事件,因为它们可以以更高的频率发生,这对流畅和精确绘图大有裨益。如果拒绝平板电脑事件,则可以压缩合成鼠标事件以提高效率。
请注意,在某些类型的平板电脑上,当触控笔悬停在平板上时按下触控笔按钮会产生按钮按压,而在其他类型的平板电脑上,则需要将触控笔按压在平板表面,以便同时记录触控笔按钮按压。
X11 用户注意事项
如果在 xorg.conf 中将手写板配置为使用 Wacom 驱动程序,则手写笔、橡皮擦以及(可选)光标和触摸板将有单独的 XInput "设备"。Qt 可通过名称识别这些设备。否则,如果将平板电脑配置为使用 evdev 驱动程序,将只有一个设备,应用程序可能无法区分手写笔和橡皮擦。
Windows 用户注意事项
平板电脑支持目前需要安装提供 DLLwintab32.dll
的 WACOM Windows 驱动程序。它包含在旧版软件包中,例如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 参数表示事件在 widget 中发生的位置;globalPos 是绝对坐标中的相应位置。
pressure dev 给出了施加在设备上的压力。
xTilt 和 分别给出设备在 x 轴和 y 轴上的倾斜度。yTilt
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() 。
qreal QTabletEvent::pressure() const
返回设备的压力。0.0 表示手写笔没有放在平板上,1.0 表示手写笔的最大压力。
另请参阅 tangentialPressure()。
qreal QTabletEvent::rotation() const
以度为单位返回当前工具的旋转角度,0 表示触控笔的笔尖指向平板电脑的顶部,正值表示向右旋转,负值表示向左旋转。这可以由 4D 鼠标或支持旋转的触控笔(如 Wacom Art Pen 或 Apple Pencil)提供。如果设备不支持旋转,则该值始终为 0.0。
qreal QTabletEvent::tangentialPressure() const
返回设备的切向压力。这通常由喷笔工具上的指轮给出。范围从 -1.0 到 1.0。0.0 表示中位。目前的气刷只能从中立位置向正方向移动。如果设备不支持切向压力,则该值始终为 0.0。
注: 该值以单精度浮点形式存储。
另请参见 pressure()。
qreal QTabletEvent::xTilt() const
返回设备(例如钢笔)与 X 轴方向的垂直线之间的角度。正值表示朝向平板电脑的物理右侧。角度范围为 -60 至 +60°。
注: 该值存储为单精度浮点数。
另请参阅 yTilt()。
qreal QTabletEvent::yTilt() const
返回设备(例如钢笔)与 Y 轴方向的垂直线之间的角度。正值朝向平板底部。角度范围在 -60 至 +60 度之间。
注: 该值存储为单精度浮点数。
另请参阅 xTilt()。
qreal QTabletEvent::z() const
返回设备的 Z 位置。通常这由 4D 鼠标上的滚轮表示。如果设备不支持 Z 轴,则该值始终为零。这与压力不同。
注意: 该值存储为单精度浮点数。
另请参阅 pressure()。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.