QML之MouseArea
来源:互联网 发布:淘宝中差评怎么改好评 编辑:程序博客网 时间:2024/06/03 17:39
MouseArea
MouseArea是一个不可见的项目,通常用来和一个可见项目配合使用。
enabled属性
默认为true;
如果为false,那么MouseArea对于鼠标将会变得透明,不处理任何鼠标事件。
pressed属性
只读的pressed属性表明,用户是否在MouseArea上按住了鼠标按钮。这个属性经常用于属性绑定,可以实现在鼠标按下时执行一些操作。
containsMouse属性
只读的containsMouse属性表明,当前鼠标光标是否在MouseArea上。默认只有鼠标的一个按钮处于按下状态时,才可以被检测到。
hoverEnabled属性
默认MouseArea项目只报告鼠标单击而不报告鼠标光标的位置改变。可以设置hoverEnabled属性为true来更改。
这样设置之后,onPositionChanged()和onEntered()和onExited()等函数才可以使用。
而且这时候containsMouse属性也可以在没有鼠标按钮按下的情况下 检查光标。
propagateComposedEvents属性
当MouseArea与其他的MouseArea项目重叠时候,可以设置propagateComposedEvents属性为true来传播clicked、doubleClicked和pressAndHold等事件。但是只有在MouseArea没有接受这些事件的时候,它们才可以继续向下传播。
即当事件已经在一个MouseArea中进行处理,则需要在其事件处理器中设置MouseEvent.accepted为false,这样事件才能继续向下传播。
Rectangle { color: "yellow" width: 100; height: 100 MouseArea{ anchors.fill: parent onClicked: console.log("Clicked yellow") onDoubleClicked: { console.log("double clicked yellow") mouse.accepted=false } } Rectangle{ color:"blue" width: 50 height: 50 MouseArea{ anchors.fill: parent propagateComposedEvents: true onClicked: { console.log("clicked blue") mouse.accepted=false } onDoubleClicked: { console.log("double clicked") mouse.accepted=false } } } }
因为蓝色的矩形的MouseArea设置了propagateComposedEvents为true,且clicked和doubleClicked事件的MouseEvent.accept设置设置为false,所有蓝色矩形的 所有单击和双击事件都会传播到黄色矩形。
鼠标事件:MouseEvent
mouse.accepted属性
通过设置accepted为true防止鼠标事件传播到下一层项目。
mouse.x属性
通过x和y来获取鼠标位置。
mouse.button属性
通过button或buttons可以获取按下的按键;
Qt.LeftButton、Qt.RightButton、Qt.MiddleButton、
modifiers
通过modifiers属性可以设置获取按下的键盘修饰符
常用按键有:
Qt.NoModifiers:没有修饰符被按下
Qt.ShiftModifiers:Shift被按下
Qt.ControlModifiers:Ctrl被按下
Qt.AltModifiers:Alt被按下
Qt.MetaModifiers:Meta键被按下
Qt.KeypadModifiers:小键盘按钮被按下
Rectangle{ width:!00; height:100; color:"green" MouseArea{ anchors.fill:parent; acceptedButtons:Qt.LeftButton|Qt.rightButton onClicked:{ if(mouse.button==Qt.RightButton) parent.color="blue" else parent.color="red" } onDoubleClicked:{ if(mouse.button==Qt.LeftButton) &&(mouse.modifiers&Qt.ShiftModifiers) parent.color="green" } }}
鼠标滚动:WheelEvent
使用鼠标滚轮事件。
onWheel处理器有一个wheel参数,就是WheelEvent类型的。
最重要的一个属性是angleDelta,可以用来获取滚轮滚动的距离,它的x,y坐标分别保存了水平和垂直方向的增量。
向上或者向右返回正值,向下或者向左返回负值。
大多数鼠标,每当滚轮旋转一下是15°,此时angleDelta的值就是15*8=120。
滚轮向上滚动放大字号,向下缩小字号。
import QtQuick 2.2Rectangle{ width:360; height:360 Text{ id:myText; anchors.centerIn:parent; text:"Qt" } MouseArea{ anchors.fill:parent; onWheel:{ if(wheel.modifiers & Qt.ControlModifier){ myText.font.pointSize+=1; }else{ myText.font.pointSize-=1; } } }}
拖放事件
MouseArea中的drag分组属性。
- QML之MouseArea事件
- QML之MouseArea
- qt4 qml MouseArea
- QML事件处理--MouseArea
- QML之MouseArea双击时过滤掉单击事件
- QML中MouseArea元素的介绍
- QML的Mouse事件(MouseArea)详解
- QML中MouseArea元素的介绍
- QML中MouseArea元素的介绍
- QML中MouseArea元素的介绍
- 实现 QMl MouseArea鼠标悬浮效果
- QML的Mouse事件(MouseArea)详解
- QT Demo 之 MouseArea
- mousearea
- QT Demo 之 MouseArea(2)
- QML MouseArea中的hoverEnabled属性影响onEntered,onExited
- QML语法例子:单击MouseArea使Rectangle变换随机的颜色
- qml中关于多个MouseArea之间的事件传递(propagateComposedEvent)
- 交叉编译Python3.6.2,使用海思arm-hisiv200-linux-gcc,移植到arm开发板上
- CSS3基础和使用规范
- 将List转换为Json对象
- JAVA 环境变量的配置的作用
- 搭建ELK(ElasticSearch+Logstash+Kibana)日志分析系统(十四) logstash grok 正则解析日志
- QML之MouseArea
- Spring中三种获取ApplicationContext的方法
- opencv学习历程001(配置opencv3.3.0+vs2015+64位win10)
- Maven在eclipse中的安装和配置
- 将图片保存至Oracle数据库Blob字段中
- 如何在Kaggle中高效搜索数据集?
- SSH综合项目实战(快递) -- day12 shiro授权的方法、菜单功能添加
- LINTCODE —— 验证二叉查找树
- Spark--性能优化之shuffle调优