QTabletEvent 类

QTabletEvent 类包含描述平板事件参数。 更多信息...

头文件 #include <QTabletEvent>
CMakefind_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmakeQT += gui
继承自 QSinglePointEvent

公共函数

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)
qrealpressure() const
qrealrotation() const
qrealtangentialPressure() const
qrealxTilt() const
qrealyTilt() const
qrealz() const

详细描述

平板事件 由诸如 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 首先发送一个平板电脑事件,然后如果它没有被任何控件接受,Qt 将发送一个鼠标事件。这允许那些非平板电脑设计的应用程序用户像使用鼠标一样使用平板电脑。然而,高分辨率绘图应用程序应该处理平板电脑事件,因为它们可以以更高的频率发生,这对于平滑和精确绘图是有益的。如果拒绝平板电脑事件,合成鼠标事件可能为了效率而压缩。

请注意,当笔尖在平板电脑上悬停时按下笔尖按钮,在有些类型的平板电脑上会生成按钮点击,而在其他类型的平板电脑上则必须将笔尖压在平板电脑表面上才能记录下同时的笔尖按钮点击。

为 X11 用户注意事项

如果将平板电脑在 xorg.conf 中配置为使用 Wacom 驱动程序,将在 XInput 中为笔、橡皮擦(可选)和光标、触摸板有一个分开的“设备”。Qt 通过它们的名称识别这些设备。否则,如果平板电脑配置为使用 evdev 驱动程序,则只有一个设备,应用程序可能无法区分笔和橡皮擦。

为 Windows 用户注意事项

平板电脑支持目前要求安装提供 DLL wintab32.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 施加的压力。

xTiltyTilt 表明设备相对于 x 和 y 轴的倾斜程度。

keyState 指定哪些键盘修饰符被按下(例如,Ctrl)。

z 参数提供设备在平板上的 Z 坐标;这通常由 4D 鼠标的滚轮提供。如果设备不支持 Z 轴(即 QPointingDevice::capabilities() 不包括 ZPosition),请在这里传递 0

tangentialPressure 参数提供喷笔的 tangential pressure 滚轮值。如果设备不支持 tangential pressure(即 QPointingDevice::capabilities() 不包括 TangentialPressure),请在这里传递 0

rotation 提供设备以度为单位的角度。4D 鼠标、Wacom Art 笔和 Apple Pencil 支持旋转。如果设备不支持旋转(即 QPointingDevice::capabilities() 不包括 Rotation),请在这里传递 0

导致事件的 buttonQt::MouseButton 级别中的一个值给出。如果事件 type 不是 TabletPressTabletRelease,则此事件的适当按钮是 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表示压感笔尖指向平板电脑顶部,正值表示向右旋转,负值表示向左旋转。这可以通过四维鼠标或具有旋转功能的压感笔(例如Wacom Art Pen或Apple Pencil)提供。如果设备不支持旋转,此值始终为0.0。

qreal QTabletEvent::tangentialPressure() const

返回设备的切向压力。这通常由喷枪工具上的手指轮提供。范围为-1.0到1.0。0.0表示中性位置。当前的喷枪只能从中性位置向正方向移动。如果设备不支持切向压力,此值始终为0.0。

注意:值以单精度浮点数存储。

另请参阅压力()。

qreal QTabletEvent::xTilt() const

返回设备(例如,一支笔)和x轴方向垂直线之间的角度。正值指向平板电脑的物理右侧。角度范围为-60到+60度。

注意:值以单精度浮点数存储。

另请参阅yTilt()。

qreal QTabletEvent::yTilt() const

返回设备(例如,一支笔)和y轴方向垂直线之间的角度。正值指向平板电脑底部。角度在-60到+60度范围内。

注意:值以单精度浮点数存储。

另请参阅xTilt()。

qreal QTabletEvent::z() const

返回设备的z位置。通常这由四维鼠标上的滚轮表示。如果设备不支持Z轴,则此值始终为零。这不是压力。

注意:值以单精度浮点数存储。

另请参阅压力()。

© 2024 The Qt Company Ltd. 本文档中包含的文档贡献是各自所有者的版权。此处提供的文档是根据自由软件基金会发布的GNU自由文档许可协议版本1.3的条款许可的。Qt及其相关标志是芬兰和/或世界其他地区The Qt Company Ltd.的商标。所有其他商标均为其各自所有者的财产。