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

标签 c++ qt qml qtquick2 qobject

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

相关文章:

c++ - 将具有浮点值的纹理传递给着色器

c++ - 从 Visual Studio 运行应用程序会导致错误(由 CMake 生成)

qt - 如何在 QML 中使用 Font Awesome

c++ - 如何覆盖二传手?

C++ 删除 static_cast<void*> (指针)行为

c++ - Qt 的默认线程

c++ - CMake Qt 模块禁用异常处理

c++ - 关于在 Xcode 中使用 C++ 构建 MacOSX GUI 应用程序的指南、教程或书籍?

c++ - ifstream 无法打开

c++ - QNetworkAccessManager : How to change post data at createRequest function