繁体   English   中英

将QML事件传播到C ++

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM