桌面懸浮視窗 滑鼠移動彈出視窗功能
阿新 • • 發佈:2021-01-19
技術標籤:QT
qml桌面懸浮視窗 滑鼠移動彈出視窗功能,實現方式可以考慮使用mouseEnter,mouseExit的方式,
其他方式比如判斷滑鼠位置也是可以考慮使用的,都可以嘗試一下
當在Button中加入MouseArea的時候,會導致Button原有的滑鼠功能無效,因為qml內部也有一個Button的MouseArea,自定義了一個MouseArea會覆蓋掉父類的,所以會失效,要解決這個問題,我們C++如果不寫,會自動呼叫父類的,這個就需要採用另外一種辦法,把資料傳透,如下所示:
MouseArea {
anchors. fill: parent
hoverEnabled: true
propagateComposedEvents: true
//滑鼠圖示, hovered 或者 pressed時顯示此圖示
cursorShape: enabled ? Qt.PointingHandCursor : Qt.ForbiddenCursor
onDoubleClicked: { mouse.accepted = false ;}
onPositionChanged: { mouse.accepted = false;}
onPressed: { mouse.accepted = false; }
onPressAndHold: { mouse.accepted = false; }
onClicked: { mouse.accepted = false;}
onReleased: { mouse.accepted = false;}
onWheel: { wheel.accepted = false; }
}
這樣資料就會傳遞到父類進行處理了
如果想忽略
entered()滑鼠事件,可能想直接mouse.accepted = false
但是MouseArea的entered()是沒有mouse引數的,qml核心原來應該是entered是其他的mouse事件響應而生成的,所以把其他的mouse事件忽略自然就可以實現忽略entered事件了