首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QML - MouseArea - propagating onPositionChanged

QML - MouseArea - propagating onPositionChanged
EN

Stack Overflow用户
提问于 2013-07-31 07:46:31
回答 2查看 5.2K关注 0票数 13

是否可以将MouseArea的positionChanged事件传播到底层事件?

我已经尝试将最顶层MouseArea的任何现有信号处理程序的mouse.accepted设置为false,并将propagateComposedEvents设置为true。这两种方法都不起作用(尽管我对propagateComposedEvents不起作用并不感到惊讶,因为文档中说它只转发像clickeddoubleClickedpressAndHold这样的事件)。

EN

回答 2

Stack Overflow用户

发布于 2013-08-08 03:12:28

根据您的结构,您总是可以通过让您的onPositionChanged处理程序调用underlyingMouseArea.positionChanged(鼠标)来手动传播事件,这应该会在底层MouseArea中手动发出信号。我唯一担心的是,您可能无法以这种方式传递MouseEvent对象(除了字符串之外,从未尝试过其他任何方法)。但是,您始终可以在C++中执行此手动发出,这绝对不会出现任何类型转换问题。

票数 3
EN

Stack Overflow用户

发布于 2014-05-22 09:38:03

除非您需要同时处理具有多个鼠标区域的位置更改事件,否则您可以尝试将顶部鼠标区域重置为父对象:

代码语言:javascript
复制
import QtQuick 2.2
import QtQuick.Layouts 1.1

Rectangle {
    id: __root
    color: "lightgreen"
    width: 360
    height: 360

    Rectangle {
        id: rect2
        width: 100; height: 100
        color: "cyan"
        MouseArea {
            parent: __root // set 'logical' parent
            anchors.fill: rect2 // set 'visual' ancestor
            hoverEnabled: true

            onPositionChanged: {
                console.log('mouse area 2 onPositionChanged');
            }
        }
    }


    MouseArea {
        anchors.fill: parent
        hoverEnabled: true

        onPositionChanged: {
            console.log('mouse area 1 onPositionChanged');
        }
    }
}

有一个unresolved bugreport

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17959347

复制
相关文章

相似问题

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