我發現了幾個與此主題有關的類似問題,但還沒有拼湊出一個可行的解決方案。我有非矩形的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