gpt4 book ai didi

c++ - 如何访问 QML 中的 C++ 类对象而不是在 QML 中创建单独的对象?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:46:51 24 4
gpt4 key购买 nike

假设有一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com