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 |
| 状态: | 已弃用 |
该类已弃用。我们强烈建议不要在新代码中使用它。
- 所有成员列表(包括继承的成员)
- QSceneLoader 属于“输入/输出与网络”部分。
公共类型
| 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::UnknownComponent | 0 | 未知组件类型 |
Qt3DRender::QSceneLoader::GeometryRendererComponent | 1 | Qt3DRender::QGeometryRenderer 组件 |
Qt3DRender::QSceneLoader::TransformComponent | 2 | Qt3DCore::QTransform 组件 |
Qt3DRender::QSceneLoader::MaterialComponent | 3 | Qt3DRender::QMaterial 组件 |
Qt3DRender::QSceneLoader::LightComponent | 4 | Qt3DRender::QAbstractLight 组件 |
Qt3DRender::QSceneLoader::CameraLensComponent | 5 | Qt3DRender::QCameraLens 组件 |
enum QSceneLoader::Status
此枚举用于标识加载状态
| 常量 | 值 | 描述 |
|---|---|---|
Qt3DRender::QSceneLoader::None | 0 | Qt3DRender::QSceneLoader 尚未被使用。 |
Qt3DRender::QSceneLoader::Loading | 1 | Qt3DRender::QSceneLoader 当前正在加载场景文件。 |
Qt3DRender::QSceneLoader::Ready | 2 | Qt3DRender::QSceneLoader 已成功加载场景文件。 |
Qt3DRender::QSceneLoader::Error | 3 | Qt3DRender::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) |
成员函数文档
[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.