我发现了几个与此主题有关的类似问题,但还没有拼凑出一个可行的解决方案。我有非矩形的Qt Quick Images,每个都有一个MouseArea子元素。当前的onClicked事件在透明区域注册父图像的点击,我想忽略这些区域。是否有只有QML的解决方案才能做到这一点?只有QML解决方案可以提供建议,还是应该使用C++完成透明度确定?忽略MouseArea onClicked事件的父母的透明区域Qt快速图像
伪代码在main.qml文件:
Image {
id: testImage
x: 200
y: 100
width: 100
height: 150
fillMode: Image.PreserveAspectFit
source: "TestImage.svg"
MouseArea {
id: testMouseArea
anchors.fill: parent
onClicked: {
//if alpha of (mouseX, mouseY) > 0 {
//DO STUFF
//}
}
}
}
我的理解是,getImageData()不会达到这个目的,所以它可能无法确定在父图像的Alpha水平直接在QML中调用(mouseX,mouseY)坐标。
请看看Qt文档。 [void QEvent :: ignore()](http://doc.qt.io/qt-5/qevent.html#ignore)。如果我没有记错,忽略的事件被传递给下一个潜在的接收者,即根据堆叠顺序例如下一个小部件。父窗口小部件。 – Scheff
你有没有真正的代码,你在网上尝试了一些解决方案?一个非常有前途的解决方案可以在这里找到:https://stackoverflow.com/questions/38164074/how-to-create-a-round-mouse-area-in-qml(即第二个答案) – derM
我想这可能只有通过实现自定义的'QQuickitem' iitem。 – folibis