gpt4 book ai didi

qt - 当MouseArea被另一个MouseArea覆盖时,如何在qml中更改光标形状

转载 作者:行者123 更新时间:2023-12-04 17:18:36 25 4
gpt4 key购买 nike

有两个负责两个不同职责的MouseArea,一个(绿色)部分位于另一个(红色)上方。每当悬停红色MA(即使它在绿色MA下)时,我都想更改光标的形状,并且我希望绿色MA对按下使用react,而没有其他事情。

两个MA可能位于不同的文件中,所以我不想在它们之间建立显式的依赖关系,例如每当红色更改containsMouse时就将正确的cursorShape设置为绿色。有没有办法防止绿色的MouseArea处理光标形状?

import QtQuick 2.4
import QtQuick.Window 2.2

Window {
visible: true
width: 200
height: 200

Rectangle { anchors.fill: parent; color: "yellow"; }

MouseArea {
width: 150
height: 150
hoverEnabled: true
cursorShape: Qt.OpenHandCursor
Rectangle { anchors.fill: parent; color: "red"; }
onPositionChanged: console.log("position", mouse.x, mouse.y)
onContainsMouseChanged: console.log("containsMouse", containsMouse)
}
MouseArea {
x: 50
y: 50
width: 150
height: 150
hoverEnabled: false
Rectangle { anchors.fill: parent; color: "green"; }
onPressed: console.log("Ahoj!")
}
}

最佳答案

无法通过MouseArea属性或任何其他现成的解决方案来执行此操作。 MouseArea始终设置一些光标形状-如果未指定cursorShape属性,则使用默认值(Qt.ArrowCursor)
您当然可以使用mapToItem()/mapFromItem()解决此问题(如Mitch建议)。但是,还有其他可能性:

您可以将visible临时更改为覆盖鼠标区域的false
或者,如果两个MouseArea都是同级,则可以对z属性进行操作以获得适合您需要的特定对象层次结构。

关于qt - 当MouseArea被另一个MouseArea覆盖时,如何在qml中更改光标形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27821054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com