将QQuickItem指针的子类指定给另一个C++对象

Give subclass of QQuickItem pointer to another C++ object

本文关键字:另一个 C++ 对象 QQuickItem 指针 子类      更新时间:2023-10-16

我非常想在QML中使用Qt-QQuickItem类的子类,因此在幕后为它提供了大量C++逻辑。然而,由于QML将实例化它并拥有它,而不是C++端,我不知道如何(如果可能的话)在这个新对象和系统中的其他C++对象之间传递指针或连接。这可能吗?

您可以在main.cpp中注册指向任意QObject的全局QML对象。

Brain *brain = new Brain();
QQmlApplicationEngine engine;
QQmlContext *context = engine.rootContext();
context->setContextProperty("brain", brain);

现在,QML中的brain在全球范围内可用。您可以将其传递给自定义组件,例如

VisibleComponent  {
    id: vico1
    width: 300
    height: 300
    Component.onCompleted: {
        vico1.setLogic(brain)
    }
}

这需要VisibleComponent中的Q_INVOKABLE void setLogic(Brain* brain);

我有一个正在运行的这个代码的示例项目,如果您需要,请告诉我。

相关文章: