我想将事件从 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
具有鼠标和键盘的虚拟事件处理程序的类,然后创建一组不同的工具来根据需要覆盖它们。它们将显示在某种工具箱中,即带有图标的网格,用户可以从中选择当前工具。所选工具是接收事件的工具。欢迎任何设计建议。
Try QEvent
,然后使用event->type()
用于过滤事件类型 http://qt-project.org/doc/qt-5/qevent.html#Type-enum.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)