2014-01-08 56 views
2

讓我們看看一個C++類,它包含QML中可以訪問的信號和一些函數。 現在,爲了訪問該QML類的成員,我寫類似:如何在QML中訪問C++類對象而不是在QML中創建單獨的對象?

myClass 
{ 
    id: abc 

    x: 100  
    onXChanged: {console.log ("xx");} 
} 

假設x是實際的C++類的一個成員,上面的代碼不工作。


現在,我有在相關C++文件創建的C++類即myClass的對象。

問:
而是在QML創建相同類的新對象,這可能和合理的訪問,並在QML使用已經創建的C++對象?

回答

2

您可以對此使用上下文屬性。你會寫這樣的事:

... 

MyClass myClassObject; 
QQuickView view; 
view.rootContext()->setContextProperty("myClassContextProperty", &myClassObject); 
view->setSource(QUrl::fromLocalFile("main.qml")); 
view->show(); 

... 

,然後你可以在QML訪問它,如下所示:

Button { 
    onClicked: myClassContextProperty.x = 100 
} 
相關問題