QML的Mouse事件(MouseArea)详解

在UI应用程序中,我们常常要处理鼠标事件,一个MouseArea就可以搞定许多事情。MouseArea本身是不可见的,主要和一些可见的元素一起使用,先来看一下它有哪些属性:

acceptedButtons:Qt::MouseButtons枚举类型,默认为Qt.leftButton,用来设置有效的鼠标按键,支持按位与“|”操作符,具体按键类型可参考——

http://doc.qt.io/qt-5/qt.html#MouseButton-enum

pressed:bool类型,当acceptedButtons中有鼠标键按下时为true。

pressedButtons:枚举值,保存了acceptedButtons中按下的鼠标键。

containsMouse:bool类型,记录光标是否在当前的MouseArea,与hoverEabled有关。

hoverEnabled:默认false,只有按下鼠标键时才处理鼠标事件,为true时即使没有按下鼠标键也会作相应的处理,影响的是containsMouse属性和onEntered()/onExited()/onPositionChanged()信号。

cursorShape:Qt::CursorShape枚举类型,默认是Qt.ArrowCursor,用来设置光标形状,具体类型可参考——

http://doc.qt.io/qt-5/qt.html#CursorShape-enum

enabled:bool类型,默认为true,用来设置当前对象是否响应鼠标事件,与Item元素的enabled属性不同的是,它只是对鼠标事件有效,不影响键盘事件,也不影响孩子对象。

mouseX/mouseY:real类型,保存了光标在当前对象的MouseArea中的X、Y坐标。

preventStealing:bool类型,默认为false,为true时可以防止当前鼠标事件被其它对象拦截。

propagateComposedEvents:bool类型,默认为false,为true时可以传递鼠标事件。

MouseArea有哪些信号呢?如下:

canceled()
clicked(MouseEvent  mouse)
doubleClicked(MouseEvent  mouse)
entered()
exited()
positionChanged(MouseEvent  mouse)
pressAndHold(MouseEvent  mouse)
pressed(MouseEvent  mouse)
released(MouseEvent  mouse)
wheel(MouseEvent  mouse)

这些信号都比较简单,不再多说了。

MouseArea还有一个有趣的drag组属性,可以实现拖拽效果,下面是其属性介绍:

drag.target:要拖拽对象的id。

drag.active:记录目标对象是否正在被拖拽。

drag.axis:设置拖拽方向,可以是Drag.XAxis/YAxis/XAndYAxis。

drag.minimumX/drag.maximumX:设置X方向可拖拽距离。

drag.minimumY/drag.maximumY:设置Y方向可拖拽距离。

drag.filterChildren:为true时,鼠标事件可被父对象接收。

drag.threshold:像素阈值,平台相关。

最后,再列举几个好玩的UI交互元素。

Flickable、Flipable可以实现弹动效果,就是一个小小的动画。

PinchArea可以通过两点触摸来实现旋转、缩放效果。

MutiPointTouchArea可以实现多点触摸手势。

Drag、DropArea也可以实现移动等效果。

时间: 2024-12-29 06:52:59

QML的Mouse事件(MouseArea)详解的相关文章

QML的Key事件(Keys)详解

QML中的Keys元素提供了一些附加属性,之所以说是"附加属性",是因为它与其它的QML元素用法不同.Keys是专门用来处理键盘事件KeyEvent的,它定义了许多针对特定按键的信号,例如digit0Pressed(KeyEvent event).spacePressed(KeyEvent event)等,不过使用pressed(KeyEvent event)和released(KeyEvent event)这两个普通的信号就可以处理大部分按键事件了,信号的参数类型是KeyEvent,

cocos2dx+lua注册事件函数详解 事件

coocs2dx 版本 3.1.1 registerScriptTouchHandler             注册触屏事件 registerScriptTapHandler                  注册点击事件 registerScriptHandler                         注册基本事件 包括 触屏 层的进入 退出 事件 registerScriptKeypadHandler           注册键盘事件 registerScriptAccelera

jQuery 事件用法详解

jQuery 事件用法详解 目录 简介 实现原理 事件操作 绑定事件 解除事件 触发事件 事件委托 事件操作进阶 阻止默认事件 阻止事件传播 阻止事件向后执行 命名空间 自定义事件 事件队列 jquery中文文档 简介 jquery 之所以成为最受欢迎的前端库,很大一部分是得益于它的事件具有良好的语义,优秀的兼容性,并且便于管理和扩展. 在这里我会介绍 jquery 事件的一些比较基础的用法. 实现原理 jquery 事件脱胎于浏览器的 addEventListener (W3) 和 attac

cocos2dx+lua注册事件函数详解

coocs2dx 版本 3.1.1 registerScriptTouchHandler 注册触屏事件 registerScriptTapHandler 注册点击事件 registerScriptHandler 注册基本事件 包括 触屏 层的进入 退出 事件 registerScriptKeypadHandler 注册键盘事件 registerScriptAccelerateHandler 注册加速事件 registerScriptTouchHandler 详解(可以设置单点或多点) ? 1 2

Qt Quick 之 QML 与 C++ 混合编程详解

Qt Quick 技术的引入,使得你能够快速构建 UI ,具有动画.各种绚丽效果的 UI 都不在话下.但它不是万能的,也有很多局限性,原来 Qt 的一些技术,比如低阶的网络编程如 QTcpSocket ,多线程,又如 XML 文档处理类库 QXmlStreamReader / QXmlStreamWriter 等等,在 QML 中要么不可用,要么用起来不方便,所以呢,很多时候我们是会基于这样的原则来混合使用 QML 和 C++: QML 构建界面, C++ 实现非界面的业务逻辑和复杂运算. 请给

【学习笔记】HTML5视频的属性、方法、事件介绍 详解

规划了一下学习路线 HTML5 -> CSS3  -> JS ->综合 7.31日开始,做好笔记做好记录 认真学习. HTMLVideoElement和HTMLAudioElement 均继承自HTMLMediaElement)所以音频文件和视频文件大多数都是一样的,除了标签名称 <video> <audio> HTML视频 大多数视频是通过插件(比如 Flash)来显示的.然而,并非所有浏览器都拥有同样的插件. HTML5 规定了一种通过 video 元素来包含

Android Touch事件分发详解

Android Touch事件分发详解 先说一些基本的知识,方便后面分析源码时能更好理解. - 所有Touch事件都被封装成MotionEvent对象,包括Touch的位置.历史记录.第几个手指等. 事件类型分为ACTION_DOWN,ACTION_UP,ACTION_MOVE,ACTION_POINTER_DOWN,ACTION_POINTER_UP,ACTION_CANCEL, 每个 一个完整的事件以ACTION_DOWN开始ACTION_UP结束,并且ACTION_CANCEL只能由代码引

(转载)【cocos2dx 3.x Lua] 注册事件函数详解

出处: http://www.2cto.com/kf/201409/338235.html coocs2dx 版本 3.1.1 registerScriptTouchHandler 注册触屏事件 registerScriptTapHandler 注册点击事件 registerScriptHandler 注册基本事件 包括 触屏 层的进入 退出 事件 registerScriptKeypadHandler 注册键盘事件 registerScriptAccelerateHandler 注册加速事件

JS事件类型详解

一般事件 onclick IE3.N2 鼠标点击时触发 此事件 ondblclick IE4.N4 鼠标双击时触发 此事件 onmousedown IE4.N4 按下鼠标时触发 此事件 onmouseup IE4.N4 鼠标按下后松开鼠标时触发 此事件 onmouseover IE3.N2 当鼠标移动到某对象范围的上方时触发 此事件 onmousemove IE4.N4 鼠标移动时触发 此事件 onmouseout IE4.N3 当鼠标离开某对象范围时触发 此事件 onkeypress IE4.