2013-12-16 52 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

相關問題