1. 程式人生 > 其它 >桌面懸浮視窗 滑鼠移動彈出視窗功能

桌面懸浮視窗 滑鼠移動彈出視窗功能

技術標籤: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事件了