Qt3DRender::QSceneLoader Class

class Qt3DRender::QSceneLoader

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

头文件: #include <QSceneLoader>
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 将尝试解析该文件,并用适当的Qt3DRender::QGeometryRendererQt3DCore::QTransformQt3DRender::QMaterial 组件构建Qt3DCore::QEntity 对象树。

加载器将尝试根据模型文件的属性确定使用的最佳材料。如果您希望使用自定义材料,则必须遍历该树,并用您的材料替换默认的相关材料。

顾名思义,Qt3DRender::QSceneLoader 可加载完整的场景子树。如果您希望加载单个几何体,请使用Qt3DRender::QMesh

Qt3DRender::QSceneLoader 内部依赖于插件的使用来支持多种 3D 文件格式。以下是 Qt3D 支持的格式列表。

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

另请参阅 Qt3DRender::QMeshQt3DRender::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 : const Status

保持场景加载状态。

访问功能:

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

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

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

[invokable] QStringList QSceneLoader::entityNames() const

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

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

© 2025 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.