qml中使用多点触摸

下面以Pinch手势(捏合手势)为例子,讲解如何在QML中实现多点触摸,qt源码中有相应工程,路径为example/declarative/touchinteraction/pincharea。


注册和导入

PinchArea作为QDeclarativeItem的子类,只要qml文件导入相应包(import QtQuick 1.1),可以直接在qml中申明并初始化。PinchArea注册 QtQuick 1.1的地方见declarative/graphicsitems/qdeclarativeitemsmodule.cppL179,注意类名前面都带有QDeclarative前缀。

类申明与定义

QdeclarativePinchArea的头文件见
declarative/graphicsitems/qdeclarativepincharea_p.h,注意一定要从QDeclarativeItem继承。QdeclarativePinchArea4个信号函数,利用Q_SIGNALS定义,在qml中实例化一个PinchArea时可以同时实现其响应函数,见onPinchStartedonPinchUpdatedonPinchFinished。对Pinch手势的识别见QDeclarativePinchArea::updatePinch(),如果识别到Pinch手势,会相应发送startupdatefinished信号,见emit关键字。
 qml中的onPinchStartedonPinchUpdatedonPinchFinished方法定义了信号传过来时控件应做的动作,这三个方法中直接使用的pinch对象,是信号函数的形参,即一个QDeclarativePinchEvent对象。

理论上这样就可以让控件对pinch手势做出响应,如果不行,请查看平台是否支持多点



你可能感兴趣的:(qml中使用多点触摸)