本页内容

Qt3DRender::QSceneLoader Class

class Qt3DRender::QSceneLoader

提供加载现有场景的功能。更多...

标题: #include <qsceneloader.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS 3drender)
target_link_libraries(mytarget PRIVATE Qt6::3drender)
qmake: QT += 3drender
在 QML 中: SceneLoader
继承自: Qt3DCore::QComponent
状态: 已弃用

该类已弃用。我们强烈建议不要在新代码中使用它。

公共类型

enum ComponentType { UnknownComponent, GeometryRendererComponent, TransformComponent, MaterialComponent, LightComponent, CameraLensComponent }
enum Status { None, Loading, Ready, Error }

属性

公共函数

QSceneLoader(Qt3DCore::QNode *parent = nullptr)
Qt3DCore::QComponent *component(const QString &entityName, Qt3DRender::QSceneLoader::ComponentType componentType) const
Qt3DCore::QEntity *entity(const QString &entityName) const
QStringList entityNames() const
QUrl source() const
Qt3DRender::QSceneLoader::Status status() const

公共槽

void setSource(const QUrl &arg)

信号

void sourceChanged(const QUrl &source)
void statusChanged(Qt3DRender::QSceneLoader::Status status)

详细说明

给定一个 3D 源文件,Qt3DRender::QSceneLoader 将尝试解析该文件,并构建一个由Qt3DCore::QEntity 对象组成的树,其中包含适当的Qt3DRender::QGeometryRenderer 、Qt3DCore::QTransform 和Qt3DRender::QMaterial 组件。

加载器将根据模型文件的属性尝试确定最佳材质。若您希望使用自定义材质,则需要遍历该树,并将默认关联的材质替换为您自己的材质。

顾名思义,Qt3DRender::QSceneLoader 用于加载完整的场景子树。若需加载单个几何体,建议改用Qt3DRender::QMesh 。

Qt3DRender::QSceneLoader 在内部,xml-ph-0000@deepl.internal 依赖插件来支持多种 3D 文件格式。以下是Qt3D 支持的格式列表。

注意:此 组件不应在多个 `Qt3DCore::QEntity ` 实例之间共享。否则将导致未定义的行为。

另请参阅 Qt3DRender::QMesh 和Qt3DRender::QGeometryRenderer 。

成员类型文档

enum QSceneLoader::ComponentType

此枚举指定了一个组件类型。

常量值描述
Qt3DRender::QSceneLoader::UnknownComponent0未知组件类型
Qt3DRender::QSceneLoader::GeometryRendererComponent1Qt3DRender::QGeometryRenderer 组件
Qt3DRender::QSceneLoader::TransformComponent2Qt3DCore::QTransform 组件
Qt3DRender::QSceneLoader::MaterialComponent3Qt3DRender::QMaterial 组件
Qt3DRender::QSceneLoader::LightComponent4Qt3DRender::QAbstractLight 组件
Qt3DRender::QSceneLoader::CameraLensComponent5Qt3DRender::QCameraLens 组件

enum QSceneLoader::Status

此枚举用于标识加载状态

常量值描述
Qt3DRender::QSceneLoader::None0Qt3DRender::QSceneLoader 尚未被使用。
Qt3DRender::QSceneLoader::Loading1Qt3DRender::QSceneLoader 当前正在加载场景文件。
Qt3DRender::QSceneLoader::Ready2Qt3DRender::QSceneLoader 已成功加载场景文件。
Qt3DRender::QSceneLoader::Error3Qt3DRender::QSceneLoader 在加载场景文件时遇到错误。

属性文档

source : QUrl

存储待加载源文件的URL。

访问函数:

QUrl source() const
void setSource(const QUrl &arg)

通知信号:

void sourceChanged(const QUrl &source)

[read-only] status : Status

保存场景加载状态。

  • SceneLoader.None
  • SceneLoader.Loading
  • SceneLoader.Ready
  • SceneLoader.Error

访问函数:

Qt3DRender::QSceneLoader::Status status() const

通知器信号:

void statusChanged(Qt3DRender::QSceneLoader::Status status)

另请参阅 Qt3DRender::QSceneLoader::Status 。

成员函数文档

[explicit] QSceneLoader::QSceneLoader(Qt3DCore::QNode *parent = nullptr)

该构造函数会根据指定的parent 创建一个实例。

[invokable] Qt3DCore::QComponent *QSceneLoader::component(const QString &entityName, Qt3DRender::QSceneLoader::ComponentType componentType) const

返回一个已加载实体的、componentType 匹配且 objectName 与entityName 匹配的组件。如果该实体有多个匹配的组件,则返回该实体组件列表中的第一个匹配项。如果没有匹配项,则返回空指针。

注意: 可通过元对象系统和 QML 调用此 函数。参见Q_INVOKABLE 。

[invokable] Qt3DCore::QEntity *QSceneLoader::entity(const QString &entityName) const

返回一个已加载的实体,其objectName 与entityName 参数匹配。如果多个实体具有相同的名称,则无法确定返回的是其中哪一个,但返回的总是同一个实体。

注意: 可通过元对象系统和 QML 调用此 函数。参见Q_INVOKABLE 。

[invokable] QStringList QSceneLoader::entityNames() const

返回已加载实体的objectNames 列表。

注意: 可通过元对象系统和 QML 调用此 函数。请参阅Q_INVOKABLE 。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.