首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询QML中的全局鼠标位置

查询QML中的全局鼠标位置
EN

Stack Overflow用户
提问于 2017-11-23 08:56:00
回答 3查看 3.5K关注 0票数 1

我正在用QML编写一个小型PoC。在我的代码中的几个地方,我需要绑定/查询全局鼠标位置(例如,在场景或游戏窗口中的鼠标位置)。即使在鼠标不在我定义的MouseAreas之外的情况下也是如此。

环顾四周,唯一的方法似乎是用另一个MouseArea覆盖整个屏幕,很可能是启用了悬停。然后,我还需要处理半手动传播(悬停)事件到底层mouseAreas。

我是不是漏掉了什么?这似乎是一个相当常见的情况--是否有一种更简单、更优雅的方法来实现这一目标?

编辑:最有问题的情况似乎是在拖出一个MouseArea时。下面是一个极简的例子(它使用Below组件和derM的答案中的鼠标事件间谍)。当我单击图像并拖动到MouseArea外部时,鼠标事件不再出现,因此除非下面有一个DropArea,否则不能更新位置。

MouseEventSpy是从这里中提取的,以响应其中的一个答案。它只被修改为将位置作为信号的参数。

代码语言:javascript
复制
import VPlay 2.0
import QtQuick 2.0
import MouseEventSpy 1.0

GameWindow {
    id: gameWindow
    activeScene: scene
    screenWidth: 960
    screenHeight: 640

    Scene {
        id: scene
        anchors.fill: parent

        Connections {
            target: MouseEventSpy
            onMouseEventDetected: {
                console.log(x)
                console.log(y)
            }
        }

        Image {
            id: tile
            x: 118
            y: 190
            width: 200
            height: 200
            source: "../assets/vplay-logo.png"
            anchors.centerIn: parent

            Drag.active: mausA.drag.active
            Drag.dragType: Drag.Automatic

            MouseArea {
                id: mausA
                anchors.fill: parent
                drag.target: parent
            }
        }
    }
}
EN

Stack Overflow用户

发布于 2017-11-23 09:06:37

由于您只有几个地方需要查询全局鼠标位置,所以我建议您使用mapToGlobalmapToItem方法。

票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47451218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档