Home · All Classes · Modules  · QSS HELP  · QSS 案例 · VER007 HOME

QTouchEvent Class Reference
[QtGui module]

该QTouchEvent类包含描述一个触摸事件的参数。More...

继承QInputEvent

Types

Methods


Detailed Description

该QTouchEvent类包含描述一个触摸事件的参数。

Enabling Touch Events

触压时,释放,或移动触摸设备上的一个或多个触摸点(如触摸屏或轨道垫)事件发生。要接收触摸事件,小部件必须有Qt.WA_AcceptTouchEvents属性设置和图形项目需要有acceptTouchEvents属性设置为True。

当使用QAbstractScrollArea基于小部件,您应该启用Qt.WA_AcceptTouchEvents属性上的滚动区域的viewport

同样以QMouseEvent, Qt的自动抓取上的小工具里面的第一次记者每个接触点,以及部件将接收所有的更新为触摸点,直到它被释放。需要注意的是它有可能为一个部件来接收事件为众多的接触点,并且多个部件可以在同一时间接收到触摸事件。

Event Handling

所有的触摸事件的类型为QEvent.TouchBeginQEvent.TouchUpdateQEvent.TouchEnd。重新实现QWidget.event()或QAbstractScrollArea.viewportEvent( )的部件和QGraphicsItem.sceneEvent()在图形视图中的项目,以接收触摸事件。

QEvent.TouchUpdateQEvent.TouchEnd事件发送给窗口小部件或产品所接受的QEvent.TouchBegin事件。如果QEvent.TouchBegin事件是不能接受的,而不是由一个事件过滤器过滤,再没有进一步的触摸事件被发送,直到下一个QEvent.TouchBegin

touchPoints( )函数返回包含在该事件的所有接触点的列表。关于每个触摸点信息可使用检索到的QTouchEvent.TouchPoint类。该Qt.TouchPointState枚举描述了不同的状态,一个触摸点可能有。

Event Delivery and Propagation

默认情况下,QWidget.event()平移所述第一非主触摸点在QTouchEvent成QMouseEvent。这使得它可以使在现有的小部件通常不处理QTouchEvent触摸事件。看看下面的这样做时需要一些特殊的注意事项的信息。

QEvent.TouchBegin是发送到插件的第一触摸事件。该QEvent.TouchBegin事件包含一个特殊的接受标志,指示接收者是否愿意事件。默认情况下,事件被接受。你应该调用ignore( )如果触摸事件不是由您的Widget处理。该QEvent.TouchBegin事件被传播到父控件链,直到一个小部件接受它accept( ) ,或者一个事件过滤器会消耗它。对于QGraphicsItems的QEvent.TouchBegin事件被传播到下鼠标(类似于用于QGraphicsItems鼠标事件传播)项目。

Touch Point Grouping

如上面所提到的,有可能是几个部件可以接收QTouchEvents在同一时间。然而, Qt后,一定要永不重复发送QEvent.TouchBegin事件以相同的部件,它可以在传播过程中理论上发生,如果,例如,在用户触摸的2个独立的小部件在一个QGroupBox和两个小部件忽略QEvent.TouchBegin事件。

为了避免这种情况, Qt会组新的接触点一起使用以下规则:

这使得它可以为同级部件独立处理触摸事件,同时确保QTouchEvents的顺序永远是正确的。

Mouse Events and the Primary Touch Point

QTouchEvent交付是独立于中QMouseEvent。在一些窗口系统,鼠标事件也发送了primary touch point。这意味着它有可能为你的widget能够同时接收QTouchEvent和QMouseEvent对于相同的用户交互点。您可以使用QTouchEvent.TouchPoint.isPrimary( )函数来确定的主要接触点。

请注意,在某些系统上,它可以接收触摸事件没有主触摸点。这一切都意味着,将有在QTouchEvent触摸点不产生鼠标事件。

Caveats


Type Documentation

QTouchEvent.DeviceType

该枚举表示所产生的一装置的类型QTouchEvent

Constant Value Description
QTouchEvent.TouchScreen 0 在这种类型的设备中,触摸表面和显示器被集成。这意味着在表面和显示器通常具有相同的尺寸,使得在所述触摸点“物理位置和坐标报告之间的直接关系QTouchEvent.TouchPoint。其结果是, Qt的允许用户直接与多个QWidgets和QGraphicsItems在同一时间进行交互。
QTouchEvent.TouchPad 1 在这种类型的设备,所述触摸表面是分开的显示。没有物理接触位置和屏幕上的坐标之间的直接关系。相反,它们被计算相对于当前鼠标位置,而用户必须使用触摸板移动至该参考点。不像触摸屏, Qt的允许用户只与一个单一的交互QWidget or QGraphicsItem在一个时间。

Method Documentation

QTouchEvent.__init__ (self, QEvent.Type eventType, DeviceType deviceType = QTouchEvent.TouchScreen, Qt.KeyboardModifiers modifiers = Qt.NoModifier, Qt.TouchPointStates touchPointStates = 0, list-of-QTouchEvent.TouchPoint touchPoints = QList<QTouchEvent.TouchPoint>())

构造一个QTouchEvent用给定的eventTypedeviceTypetouchPoints。该touchPointStatesmodifiers是当前触摸点的状态和键盘功能键在事件发生的时间。

QTouchEvent.__init__ (self, QTouchEvent)

DeviceType QTouchEvent.deviceType (self)

返回触摸设备类型,它的类型是DeviceType

list-of-QTouchEvent.TouchPoint QTouchEvent.touchPoints (self)

返回包含在该触摸事件的触摸点的列表。

Qt.TouchPointStates QTouchEvent.touchPointStates (self)

返回此事件的一个位的所有接触点或国家。

QWidget QTouchEvent.widget (self)

返回上发生事件的小部件。




PyQt 4.10.3 for X11 Copyright © Riverbank Computing Ltd and Nokia 2012 Qt 4.8.5