qml无窗应用中如何设置拖拽区域

How to set the drag area in qml windowless application

我的问题是如何设置在没有 window-decorations 的情况下拖动应用程序 我见过很多可以用鼠标在桌面上拖动的应用程序。我的应用程序使用 Qml,所以任何可能的方法都可以完成这项工作,谢谢。

获取您的 MouseArea::positionChanged 信号并使用位置增量(您必须保存每次调用的最后位置,以便计算增量)更新您的 Window::xy属性。

Window {
    id: win
    width: 200
    height: 200

    MouseArea {
        anchors.fill: parent

        property int lastX
        property int lastY

        onPositionChanged: {
            // Remap the mouse coords back to the window.  Not
            // necessary in this example, but will be in 'real'
            // use.
            var mPos = mapToItem( null, mouse.x, mouse.y );
            mPos.x += win.x;
            mPos.y += win.y;

            // Skip the first iteration by testing if the properties
            // are defined, otherwise the window will jump.
            if ( lastX && lastY ) {
                win.x += mPos.x - lastX;
                win.y += mPos.y - lastY;
            }

            lastX = mPos.x;
            lastY = mPos.y;
        }
    }
}