在qtquick 1.1中传播定位的事件为背景项目
Propagating onPositionChanged events to background items in QtQuick 1.1
background.qml
import QtQuick 1.1
Item {
MouseArea {
id: backgroundMouseArea
anchors.fill: parent
hoverEnabled: true
onPositionChanged: {
console.log("Background")
}
}
}
foreground.qml
import QtQuick 1.1
Item {
Background {
width: 1920
height: 1080
}
MouseArea {
anchors.fill: parent
hoverEnabled: true
onPositionChanged: {
console.log("Foreground")
[mouse.accepted = false] - Not working (as the docs say)
[backgroundMouseArea.onPositionChanged(mouse)] - Not working
}
}
}
我需要在背景和前景项目上执行onPositionChanged
事件。
f.ex。对于onPressed
,我会通过在前景项目中设置mouse.accepted = false
来做到这一点。
我可以手动调用背景项目的onPositionChanged
吗?如果是,我该怎么办?
我不完全确定您在这里要实现的目标。MouseArea
旨在从硬件中获取鼠标事件。如果您真的想从不同的MouseArea
传播鼠标事件到背景中,也许您实际想做的就是给Background
一个简单的property mousePosition
而不是MouseArea
,然后从前景onPositionChanged
处理程序设置该位置。
此外,您的前景代码依赖于背景内部的内部id
参数。这真的很糟糕。考虑背景和前景"类"的"公共API"通常更有用。如果我上面描述的确实是您想做的,那么这就是IMHO的样子:
// Background.qml
import QtQuick 1.1
Rectangle {
// an object with just x and y properties
// or the complete mouseevent, whatever you want
// Use variant for QtQuick 1/Qt4, var for QtQuick 2.0 / Qt5
property variant mousePosition
onMousePositionChanged: console.log(
"Background " + mousePosition.x + " " + mousePosition.y
)
}
//Foreground.qml
import QtQuick 1.1
Item {
// use only ids defined in the same file
// else, someone might change it and not know you use it
Background { id: background }
MouseArea {
anchors.fill: parent
hoverEnabled: true
onPositionChanged: {
console.log("Foreground")
background.mousePosition = {x: mouse.x, y: mouse.y}
}
}
}
........................
相关文章:
- Android NDK传感器向事件队列报告奇怪的间隔
- 如何在全屏模式下(在OpenGL中)使背景透明
- 从文本文件中读取时钟时间和事件时间并进行处理
- WMI检测进程创建事件-c++
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 使用窗口中的QSlider更改背景音量
- 处理闪烁窗口事件
- C++Builder中的OnClick事件签名存在问题
- 跟踪滚动条上的鼠标事件
- 什么是事件表 (wxWidgets)?
- 如何在 MFCaptureEngine 中获取"Camera removed"事件
- 给定顺序中的事件处理
- 当服务中的事件被触发时,如何将响应从服务发送回客户端?
- 在 C++/CLI 中将 .NET 事件从一个 DLL 引发到另一个 DLL
- 如何创建事件驱动的 SDL2 应用程序
- Windows 进程间同步类似事件?
- 如何从C++端挂接到 QML 项的 onClick 事件
- 如何通过多类"Union variable" (sfml) 使用轮询事件
- 在qtquick 1.1中传播定位的事件为背景项目
- Qt传播背景项上的绘制事件