如何从C++访问QML Surface3DSeries?

How to access QML Surface3DSeries from C++?

本文关键字:QML Surface3DSeries 访问 C++      更新时间:2023-10-16

如何从C++访问qml Surface3DSeries对象? 我在QObject::findChildren((方法上遇到了严重的问题。我的main.qml声明了一个对象名称为"mySurface"的Surface3D和一个对象名称为"mySurfaceSeries"的Surface3DSeries项目,如下所示:

Surface3D {
objectName: "mySurface"
width: parent.width
height: parent.height
Surface3DSeries {
objectName: "mySurfaceSeries"
ItemModelSurfaceDataProxy {
[...]
}
}
}

在main.cpp中加载qml后,我的C++代码调用rootObject->findChildren((。返回的对象树包含一个名为"mySurface"的对象,但不包含名为"mySurfaceSeries"的对象。我不知道为什么 - 我认为 qml 中的每个项目都会在对象树中表示。qml中没有明显的错误,Surface3D可以正确显示Surface3DSeries提供的数据。

树的"mySurface"对象不是Q3DSurface(通过它可以访问该系列(,而是一个QtDataVisualization::D eclarativeSurface,在我能找到的任何地方都没有描述。DeclarativeSurface 类在 qtdatavis3d/src/datavisualizationqml2/declarativesurface_p.h 中定义,包含一个很有前途的方法 seriesList(( - 但 QtCreator 说"命名空间 'QtDataVisualization'中没有名为 'DeclarativeSurface' 的类型",显然该文件不在 QtCreator 的包含文件路径中。

所以我现在不知所措 - 如何从C++访问Surface3DSeries?

谢谢! 汤姆

这是可能的,但不受支持且未记录。