QTouchEvent 类包含触摸事件的描述参数。 更多...
头: | #include <QTouchEvent> |
qmake: | QT += gui |
Since: | Qt 4.6 |
继承: | QInputEvent |
该类在 Qt 4.6 引入。
class | TouchPoint |
QTouchEvent (QEvent::Type eventType , QTouchDevice * device = nullptr, Qt::KeyboardModifiers modifiers = Qt::NoModifier, Qt::TouchPointStates touchPointStates = Qt::TouchPointStates(), const QList<QTouchEvent::TouchPoint> & touchPoints = QList<QTouchEvent::TouchPoint>()) | |
virtual | ~QTouchEvent () |
QTouchDevice * | device () const |
QObject * | target () const |
Qt::TouchPointStates | touchPointStates () const |
const QList<QTouchEvent::TouchPoint> & | touchPoints () const |
QWindow * | window () const |
触摸事件发生,当在触摸设备 (譬如:触摸屏或跟踪板) 中按下、释放或移动一个或多个触摸点时。要接收触摸事件,Widget 必须拥有 Qt::WA_AcceptTouchEvents 属性设置和图形项需要拥有 acceptTouchEvents 属性设置为 true。
当使用 QAbstractScrollArea 基 Widget,应启用 Qt::WA_AcceptTouchEvents 属性在卷动区域 viewport .
类似于 QMouseEvent ,Qt 自动抓取每个触摸点当在 Widget 内第一次按下时,且小部件将接收触摸点的所有更新,直到它被释放。注意,Widget 能接收很多触摸点事件,且多个小部件可能同时接收触摸事件。
所有触摸事件类型,包括 QEvent::TouchBegin , QEvent::TouchUpdate , QEvent::TouchEnd or QEvent::TouchCancel 。重实现 QWidget::event () 或 QAbstractScrollArea::viewportEvent () 对于 Widget 和 QGraphicsItem::sceneEvent () 对于要接收触摸事件的图形视图项。
不像 Widget,QWindows 始终接收触摸事件,无需选项。当直接工作于 QWindow ,是足够的重实现 QWindow::touchEvent ().
The QEvent::TouchUpdate and QEvent::TouchEnd 事件会被发送给 Widget 或项接受 QEvent::TouchBegin 事件。若 QEvent::TouchBegin 事件未接受且未被事件过滤器所过滤,则进一步触摸事件不会被发送直到下一 QEvent::TouchBegin .
某些系统可能发送事件类型 QEvent::TouchCancel 。当收到此事件时,应用程序被请求忽略整个活动触摸序列。例如,在合成系统中,合成器可以决定将某些手势视为系统范围手势。每当做出这种决定 (识别手势) 时,会通知客户端采用 QEvent::TouchCancel 事件,因此它们可以相应更新其状态。
The touchPoints () 函数返回事件中包含的所有触摸点的列表。注意,此列表可能为空,例如,若为 QEvent::TouchCancel 事件。可以检索每个触摸点的有关信息使用 QTouchEvent::TouchPoint 类。 Qt::TouchPointState 枚举描述触摸点可能拥有的不同状态。
注意: 列表 touchPoints () 从不会是一部分:触摸事件将始终包含目标窗口 (或 Widget) 到发送事件的每一现有物理触摸联络的触摸点。例如,假定所有触摸都目标同一窗口 (或 Widget),则事件具有条件 touchPoints ().count()==2 保证,暗示触摸触摸屏 (或触摸板) 的准确手指数为 2。
默认情况下, QGuiApplication 翻译第一触摸点在 QTouchEvent 成 QMouseEvent . This makes it possible to enable touch events on existing widgets that do not normally handle QTouchEvent. See below for information on some special considerations needed when doing this.
QEvent::TouchBegin 是发送给 Widget 的第一触摸事件。 QEvent::TouchBegin 事件包含指示接收者是否想要事件的特殊接受标志。默认情况下,接受事件。应该调用 ignore () 若 Widget 不处理触摸事件。 QEvent::TouchBegin 事件会沿父级 Widget 链向上传播,直到小部件接受它采用 accept (),或事件过滤器消耗掉它。对于 QGraphicsItems, QEvent::TouchBegin 事件被传播给鼠标下项 (类似于 QGraphicsItems 的鼠标事件传播)。
如上所述,它是可能的几个 Widget 可以同时接收 QTouchEvents。不管怎样,Qt 确保从不重复发送 QEvent::TouchBegin 事件给同一 Widget,理论上传播期间可能发生,例如,若用户触摸 2 单独 Widget 在 QGroupBox 与两 Widget 忽略 QEvent::TouchBegin 事件。
为避免这,Qt 使用下列规则将新触摸点分组到一起:
这使同级 Widget 能够独立处理触摸事件,同时确保 QTouchEvents 序列始终正确成为可能。
QTouchEvent 的交付独立于 QMouseEvent 。应用程序标志 Qt::AA_SynthesizeTouchForUnhandledMouseEvents and Qt::AA_SynthesizeMouseForUnhandledTouchEvents 可以用于启用 (或禁用) 将触摸事件自动合成为鼠标事件,和将鼠标事件自动合成为触摸事件。
另请参阅 QTouchEvent::TouchPoint , Qt::TouchPointState , Qt::WA_AcceptTouchEvents ,和 QGraphicsItem::acceptTouchEvents ().
构造 QTouchEvent 采用给定 eventType , device ,和 touchPoints 。 touchPointStates and modifiers 是事件发生时当前触摸点状态和键盘修饰符。
[虚拟]
QTouchEvent::
~QTouchEvent
()
销毁 QTouchEvent .
返回此触摸事件发源的触摸设备。
返回出现事件的窗口内的目标对象。这通常是 QWidget 或 QQuickItem 。可能为 0 当没有可用特定目标时。
返回此事件所有触摸点状态的按位 OR。
返回触摸事件中包含的触摸点列表。
返回出现事件的窗口。当基于像 rawScreenPositions() 数据做全局-本地映射时会很有用,出于性能原因,仅将全局位置存储在触摸事件中。