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 |
受保护函数
| QTabletEvent(QTabletEvent &&) | |
| QTabletEvent & | operator=(QTabletEvent &&) |
| QTabletEvent & | operator=(const QTabletEvent &other) |
详细说明
数位板事件由数位板外设(如 Wacom 数位板及其他各种品牌)以及某些类型平板电脑中随附的电磁笔设备生成。(这与触摸屏生成的QTouchEvent 不同,即使在触摸屏上使用被动式触控笔也是如此。)
绘图板事件与鼠标事件类似;例如,x()、y()、pos()、globalX()、globalY() 和globalPos() 访问器提供光标位置,您还可以查看哪些buttons() 被按下(将触控笔笔尖按在绘图板表面上相当于按下鼠标左键)。 但数位板事件还会传递一些由数位板设备驱动程序提供的额外信息;例如,您可能希望使用更高分辨率的坐标进行亚像素渲染(globalPosF()),根据工具相对于数位板表面的pressure()来调整颜色亮度,根据所用工具的类型使用不同的画笔(deviceType()), 根据工具相对于数位板表面的 X 轴和 Y 轴倾斜角度以某种方式调节画笔形状(xTilt() 和yTilt()),以及当用户切换到双头触控笔的另一端时,使用虚拟橡皮擦代替画笔(pointerType())。
每个事件都包含一个接受标志,用于指示接收方是否需要该事件。若要处理绘图板事件,应调用QTabletEvent::accept();否则,该事件将被发送至父控件。TabletEnterProximity和TabletLeaveProximity事件是例外:这些事件仅发送至QApplication ,且不检查是否被接受。
QWidget::setEnabled() 函数可用于启用或禁用小部件的鼠标、数位板和键盘事件。
事件处理函数QWidget::tabletEvent() 会接收 TabletPress、TabletRelease 和 TabletMove 事件。Qt 会先发送绘图板事件,如果该事件未被任何小部件接受,则会发送鼠标事件。 这使得非专为数位板设计的应用程序的用户能够像使用鼠标一样使用数位板。然而,高分辨率绘图应用程序应处理数位板事件,因为这些事件可能以更高的频率发生,这对流畅且精确的绘图大有裨益。如果数位板事件被拒绝,出于效率考虑,生成的合成鼠标事件可能会被压缩。
请注意,在触控笔悬停于数位板上方时按下笔键,某些类型的数位板会触发按键事件;而在其他类型的数位板上,则需要将触控笔按压在数位板表面上,才能识别同时按下的笔键事件。
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 参数指示事件在小部件中的发生位置;globalPos 则是对应的绝对坐标位置。
pressure 表示施加在设备上的压力dev 。
xTilt 以及yTilt 分别给出设备相对于 x 轴和 y 轴的倾斜角度。
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()。
[protected delete] QTabletEvent::QTabletEvent(QTabletEvent &&)
通过移动构造一个QTabletEvent 实例。该函数已被删除。
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()。
[protected delete] QTabletEvent &QTabletEvent::operator=(QTabletEvent &&)
将 `other ` 通过移动赋值传递给此 `QTabletEvent ` 实例。该函数已被删除。
[noexcept protected default] QTabletEvent &QTabletEvent::operator=(const QTabletEvent &other)
将other 复制并赋值给此QTabletEvent 实例。
© 2026 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.