2013-12-16 57 views
4

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

+0

“按对象名称访问加载的QML对象”[http://qt-project.org/doc/qt-5.0/qtqml/qtqml-cppintegration-interactqmlfromcpp.html](http://qt-project .ORG/DOC/QT-5.0/qtqml/qtqml-cppintegration-interactqmlfromcpp.html)? –

回答

0

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

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) 
    } 
} 

这需要一个VisibleComponentQ_INVOKABLE void setLogic(Brain* brain);

我有一个运行的代码项目的这段代码,让我知道你是否需要它。

+0

看起来可能,谢谢。 – johnbakers

相关问题