[英]Propagate QML events to C++
我想将事件从QML信号处理程序传播到C ++过程,但不知道如何传递“事件对象”。 看看这种情况,并特别注意SomeType
。
首先,我创建一个自定义QML项目,其中包含一个可以从QML调用的插槽:
class Tool : public QQuickItem
{
. . .
public slots:
virtual void onMousePositionChanged(SomeType *event);
}
然后,在QML中,我创建了一个MouseArea
和我想要将事件传播到的自定义对象的实例。
MouseArea {
hoverEnabled: true
onPositionChanged: {
var event = . . .
tool.onMousePositionChanged(event);
}
}
Tool {
id: tool
}
而且存在问题。 我不知道如何组装SomeType
的实例来传递给方法。 实际上我不知道我应该选择什么作为SomeType
。 理想情况下,这将是QQuickMouseEvent
所以我可以调用tool.onMousePositionChanged(mouse)
,但由于某种原因,此类型不能在C ++代码中使用。
我也考虑过QMouseEvent
所以我只需要重写属性,但这个类反过来似乎不能用于QML代码。
我是Qt Quick的新手,所以也许我完全滥用了它。 我想要实现的是让这个基础Tool
类具有鼠标和键盘的虚拟事件处理程序,然后创建一个不同工具的集合,根据需要覆盖它们。 它们将显示在某种工具箱中,即带有图标的网格,用户可以从中选择当前工具。 选择的工具是接收事件的工具。 欢迎任何设计建议。
尝试使用QEvent
,然后使用event->type()
过滤事件类型 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.