假设有一个 C++ 类,其中包含可从 QML 访问的信号和一些函数。 现在,为了在 QML 中访问该类的成员,我编写如下内容:
myClass
{
id: abc
x: 100
onXChanged: {console.log ("xx");}
}
假设x
是实际C++类的成员,上面的代码确实有效。
现在,我有一个 C++ 类的对象,即在相关 C++ 文件中创建的 myClass
。
问题:
在 QML 中访问和使用已创建的 C++ 对象是否可能且明智,而不是在 QML 中创建同一类的新对象?
最佳答案
您可以为此使用上下文属性。你会写这样的东西:
...
MyClass myClassObject;
QQuickView view;
view.rootContext()->setContextProperty("myClassContextProperty", &myClassObject);
view->setSource(QUrl::fromLocalFile("main.qml"));
view->show();
...
然后您可以在 qml 中访问它,如下所示:
Button {
onClicked: myClassContextProperty.x = 100
}
关于c++ - 如何在 QML 中访问 C++ 类对象而不是在 QML 中创建单独的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20993593/