QML之MouseArea元素

MouseArea

是一个处理鼠标事件的元素,需要和其他可见元素进行组合使用。

属性

acceptedButtons : Qt::MouseButtons

表示MouseArea响应的鼠标按键。可取的值有:
Qt.LeftButton
Qt.RightButton
Qt.MiddleButton
默认值是Qt.LeftButton
acceptedButtons属性还可以接受以上三个值的或组合形式,如下:
MouseArea { acceptedButtons: Qt.LeftButton | Qt.RightButton }

containsMouse : bool 只读

该属性用来表明当前的鼠标是否在MouseArea中。
注意如果当前鼠标在MouseArea中,此时如果移动MouseArea,这个属性不会自动更新,也就是说containsMouse属性值不会改变。另外如果hoverEnable为false,只有当鼠标被单击时containsMouse才是true

containsPress : bool 只读

该属性用来判断当前鼠标是否按下,效果等同于”pressed”&&”containsMouse”

drag

drag.target : Item
drag.target用来指明可以拖动的目标item的id
drag.active : bool
drag.active表明目标item当前是否正在被拖动。
drag.axis : enumeration
drag.axis用来说明是否可以水平拖动(Drag.XAxis)或是垂直拖动(Drag.YAxis)或是水平和垂直都能拖动(Drag.XandYAxis)
drag.minimumX : real
drag.maximumX : real
drag.minimumY : real
drag.maximumY : real
drag.minimum和drag.maximum用来指明可以拖动的最小和最大距离
drag.filterChildren : bool
drag.filterChildren为true时,鼠标事件可被父对象接收
drag.threshold : real
drag.threshold确定拖动操作开始时的像素阈值,默认情况下,这将绑定到依赖于平台的值
drag属性集让item拖动变得很方便。

enabled : bool

该属性表示item是否接收鼠标事件。默认为true

hoverEnabled : bool

该属性表明是否处理鼠标悬停事件。
默认情况下,只处理数据的按键事件。如果hoverEnabled属性为true则所有的鼠标事件都会被处理,即使鼠标没有被按下

mouseX : real
mouseY : real

mouseX和mouseY属性是当前鼠标的位置
如果hoverEnabled属性值为false,则坐标只有在pressed和released时会被更新。
如果hoverEnabled属性值为true,则只要在对象上都有效

pressed : bool

该属性表明当前MouseArea是否按下。
如果acceptedButtons为默认值LeftButton,则该属性只代表鼠标左键是否被按下;
如果acceptedButtons为LeftButton|RightButton,则只要左右任意一个按键被按下,该属性就为true

pressedButtons : MouseButtons 只读

该属性返回的是当前按下的是哪个鼠标按键,具体取值如下:
Qt.LeftButton
Qt.RightButton
Qt.MiddleButton

preventStealing : bool

该属性表示是否可以窃取鼠标事件(暂时不清楚具体功能)
为false时,如果子对象的事件响应的事件可能会被父窗口截取

propagateComposedEvects : bool

该属性是将鼠标的组合事件进行传播(暂时不清楚具体功能)

scrollGestureEnabled : bool

该属性控制此MouseArea是否响应来自非鼠标设备的滚轮操作,例如触控板上的2指操作。
如果设置为false,则只有滚轮事件为实际的鼠标滚来才会响应

信号

canceled()

当鼠标事件没有被接收或是被其他元素截获时,会发生该信号。
当有多个MouseArea处理输入时或是Flickable元素中包含一个MouseArea时,canceled()信号会显得特别重要。
如果在Flickable元素中包含一个MouseArea时,当执行一些针对于按下信号的逻辑处理然后又拖动鼠标时,Flickable会从MouseArea中截获鼠标事件。这种情况下,当Flickable截获了MouseArea的鼠标事件时需要重置逻辑。

clicked(MouseEvent mouse)

当有单击事件(在MouseArea中按下紧接着释放)发生时,会发送该信号

doubleClicked(MouseEvent mouse)

双击事件时发送该信号。
在MouseArea::onDoubleClicked中如果将accepted属性设置为false,则在第二次单击时onPressed、onReleased、onClicked仍会被调用,否则不会被调用。

entered()

当鼠标进入MouseArea中,会发送该信号。
hoverEnabled设置为false,只有当鼠标MouseArea中单击按下时才会发送该信号
hoverEnabled设置为true,当鼠标移动进入到MouseArea中时才会发送该信号

exited()

当鼠标离开MouseArea时,会发送该信号。
hoverEnabled设置为false,只有当鼠标在MouseArea中单击释放时才会发送该信号
hoverEnabled设置为true,当鼠标移出MouseArea时才会发送该信号

positionChanged(MouseEvent mouse)

当鼠标位置发生改变时发送该信号.
hoverEnabled设置为false,只有鼠标按下移动时才会发送该信号
hoverEnabled设置为true,只要鼠标在MouseArea中移动都会发送该信号(包含按下移动)

pressAndHold(MouseEvent mouse)

鼠标按键长按时发送该信号,只会响应一次

pressed(MouseEvent mouse)

鼠标按键按下时发送该信号。

released(MouseEvent mouse)

鼠标按键释放时发送该信号

wheel(WheelEvent wheel)

鼠标滚轮或触控板的二指拖动发送该信号

参考如下:
https://blog.csdn.net/no_water/article/details/56011671
https://blog.csdn.net/LC900730/article/details/78001914

  • 12
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值