qt - 按住Qml MouseArea移动窗口

标签 qt qml

我想知道如何通过按住Qt/QML中的MouseArea来移动窗口。

最佳答案

您可以使用以下方法将 View 小部件暴露给QML:

QmlApplicationViewer viewer;
QDeclarativeContext *context = viewer.rootContext();
context->setContextProperty("viewerWidget", &viewer);

然后修改其pos属性以移动窗口:
MouseArea {        
    anchors.fill: parent
    property variant previousPosition        
    onPressed: {
        previousPosition = Qt.point(mouseX, mouseY)
    }
    onPositionChanged: {
        if (pressedButtons == Qt.LeftButton) {
            var dx = mouseX - previousPosition.x
            var dy = mouseY - previousPosition.y
            viewerWidget.pos = Qt.point(viewerWidget.pos.x + dx, 
                                        viewerWidget.pos.y + dy)
        }
    }
}    

关于qt - 按住Qml MouseArea移动窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10203260/

相关文章:

c++ - Qt与图像处理

c++ - 具有最小 OOP 的 Qt 4.0 信号和槽

c++ - 如何管理返回给 QML 的动态分配的 QObject 的生命周期?

c++ - 如何在 qquickwindow 中正确覆盖 mousePressEvent?

javascript - QML 动态创建工具提示

c++ - QDeclarativeExtensionPlugin 与 QML 通信

c++ - Qt5 在多宿主网络上绑定(bind) TCP 套接字

c++ - Qt 中是否有任何预定义函数可以将 QImage 对象保存到 JPG/PNG/BMP 文件?

qt - 在 Ubuntu 16.04.1 上使用 OpenSSL 构建 Qt 失败

c++ - 了解向 QML 公开 C++ 类型的属性