★3.3.1 ※MouseArea
Item <-- MouseArea |
||
属性 |
||
acceptedButtons : Qt::MouseButtons |
||
containsMouse : bool |
【书】只读属性。表明当前鼠标光标是否在MouseArea上,默认只有鼠标的一个按钮处于按下状态时才可以被检测到。 |
|
containsPress : bool |
||
cursorShape : Qt::CursorShape |
||
下面这些解释都来自书P117 |
||
drag.active : bool |
【书】指定目标项目当前是否可以被拖动。值:true 或 false ?好像是个只读属性不能设置。等于说设置了target就等于说是true了? |
|
drag.axis : enumeration |
【书】指定可以拖动的方向。值:Drag.XAxis 水平方向 Drag.YAxis 垂直方向 Drag.XAndYAxis 水平和垂直方向 |
|
drag.filterChildren : bool |
【书】使子 MouseArea 也启用拖动。值:true 或 false |
|
drag.maximumX : real |
【书】最小和最大拖动距离。值是像素,real类型的值。 |
|
drag.maximumY : real |
||
drag.minimumX : real |
||
drag.minimumY : real |
||
drag.smoothed : bool |
【书】是否平滑拖动。值:true或false |
|
drag.target : Item |
【书】指定要拖动的项目ID。值:对象 |
|
drag.threshold : real |
【书】启用拖动的阈值,超过该值才被认为是一次拖动;合理设置阈值可以有效避免用户因抖动等原因造成的拖动误判。 real类型的值,以像素为单位。 |
|
enabled : bool |
【书】是否启用鼠标处理,默认为true。如果设置为false则不处理任何鼠标事件。 |
|
hoverEnabled : bool |
【书】默认情况下MouseArea项目只报告鼠标单击而不报告鼠标光标的位置改变,这可以通过设置hoverEnabled属性为true来进行更改。这样设置后,onPositionChanged(),onEntered()和onExited()等处理函数才可以使用。而且这时containsMouse属性也可以在没有鼠标按钮按下的情况下检查光标。 |
|
mouseX : real |
onMouseXChanged: { if (mouseX - recZoom.x >= 0) { xScaleZoom = 1; recZoom.width = mouseX - recZoom.x; } else { xScaleZoom = -1; recZoom.width = recZoom.x - mouseX; } } |
|
mouseY : real |
onMouseYChanged: { if (mouseY - recZoom.y >= 0) { yScaleZoom = 1; recZoom.height = mouseY - recZoom.y; } else { yScaleZoom = -1; recZoom.height = recZoom.y - mouseY; } } |
|
pressAndHoldInterval : int |
||
pressed : bool |
【书】只读属性,表明是否在MouseArea上按住了鼠标按钮,这个属性经常用于属性绑定,可以实现在鼠标按下时执行一些操作。 【补例子】 |
|
pressedButtons : MouseButtons |
||
preventStealing : bool |
||
propagateComposedEvents : bool |
【书】属性设置为true来传播clicked,doubleClicked和pressAndHold等事件。但是只有在MouseArea没有接受这些事件的时候,它们才可以继续向下传播。 |
|
scrollGestureEnabled : bool |
||
信号 |
||
canceled() |
||
clicked(MouseEvent mouse) |
||
doubleClicked(MouseEvent mouse) |
||
entered() |
||
exited() |
||
positionChanged(MouseEvent mouse) |
onPositionChanged() |
|
pressAndHold(MouseEvent mouse) |
||
pressed(MouseEvent mouse) |
onPressed() |
|
released(MouseEvent mouse) |
onReleased() |
|
wheel(WheelEvent wheel) |
||
Method |
||
为了与不同的元素交互,你通常需要使用 MouseArea(鼠标区域)元素。这是一个矩形的非可视化元素对象,你可以通过它来捕捉鼠标事件。当用户与可视化端口交互时,mouseArea 通常被用来与可视化元素对象一起执行命令。
很多时候,MouseArea 区域会传递一个鼠标事件作为参数,这个参数中包含了很多鼠标事件信息,例如,单击的位置,具体按下的一个鼠标左键还是右键,以及一些键盘按键信息。
Rectangle {
width: 100; 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';
}
}
}
在上面的例子中,当 Rectangle 区域被右键单击时会触发改变颜色。
也是继承自Item.
因为它看不到。所以在MouseArea里外面又套了一个Rectangle.下面的例子是在MouseArea里面嵌套一个Rectangle.