Qt3DRender::Quick::QScene2D Class

class Qt3DRender::Quick::QScene2D

该类可将 qml 渲染成纹理,然后用作 3D 场景的一部分。更多

头文件: #include <Qt3DQuickScene2D/QScene2D>
CMake: find_package(Qt6 REQUIRED COMPONENTS 3dquickscene2d)
target_link_libraries(mytarget PRIVATE Qt6::3dquickscene2d)
qmake: QT += 3dquickscene2d
在 QML 中: Scene2D
继承: Qt3DCore::QNode
状态:已废弃

公共类型

enum RenderPolicy { Continuous, SingleShot }

属性

公共功能

QScene2D(Qt3DCore::QNode *parent = nullptr)
void addEntity(Qt3DCore::QEntity *entity)
QList<Qt3DCore::QEntity *> entities() const
bool isMouseEnabled() const
QQuickItem *item() const
Qt3DRender::QRenderTargetOutput *output() const
void removeEntity(Qt3DCore::QEntity *entity)
Qt3DRender::Quick::QScene2D::RenderPolicy renderPolicy() const

公共插槽

void setItem(QQuickItem *item)
void setMouseEnabled(bool enabled)
void setOutput(Qt3DRender::QRenderTargetOutput *output)
void setRenderPolicy(Qt3DRender::Quick::QScene2D::RenderPolicy policy)

信号

void itemChanged(QQuickItem *item)
void mouseEnabledChanged(bool enabled)
void outputChanged(Qt3DRender::QRenderTargetOutput *output)
void renderPolicyChanged(Qt3DRender::Quick::QScene2D::RenderPolicy policy)

详细说明

该类使用QQuickRenderControl 将给定的QQuickItem 渲染成屏幕外表面,该表面与用户提供的纹理相连。这样,组件就可以直接渲染到纹理中,而无需中间复制,用户也可以自由指定纹理在三维场景中的使用方式。

使用 QScene2D 的实体可与该类关联,以实现与项目的交互;如果实体有一个QObjectPicker 组件,则该拾取器的拾取事件会发送到 QScene2D,并转换为鼠标事件,最后发送到项目。

注意: 只支持鼠标事件。项目不支持键盘输入。

成员类型文档

enum QScene2D::RenderPolicy

该枚举类型描述了可用的呈现策略类型。

常量描述
Qt3DRender::Quick::QScene2D::Continuous0Scene2D 正在连续渲染。这是默认渲染策略。
Qt3DRender::Quick::QScene2D::SingleShot1Scene2D 只对纹理进行一次渲染,之后就会释放为渲染分配的资源。

属性文档

item : QQuickItem*

保存QQuickItem ,通过QScene2D 渲染纹理。

访问功能:

QQuickItem *item() const
void setItem(QQuickItem *item)

通知信号:

void itemChanged(QQuickItem *item)

mouseEnabled : bool

显示渲染项目是否已启用鼠标事件。鼠标事件由添加到QScene2D 的实体的对象拾取事件产生。默认情况下鼠标事件是启用的。

注: 由于对象拾取是在后台进行的,因此事件会延迟一帧。

访问功能:

bool isMouseEnabled() const
void setMouseEnabled(bool enabled)

通知信号:

void mouseEnabledChanged(bool enabled)

output : Qt3DRender::QRenderTargetOutput*

保存QRenderTargetOutput ,用于指定QScene2D 的渲染位置。

访问功能:

Qt3DRender::QRenderTargetOutput *output() const
void setOutput(Qt3DRender::QRenderTargetOutput *output)

通知信号:

void outputChanged(Qt3DRender::QRenderTargetOutput *output)

renderPolicy : RenderPolicy

保存此Scene2D 的渲染策略。

访问功能:

Qt3DRender::Quick::QScene2D::RenderPolicy renderPolicy() const
void setRenderPolicy(Qt3DRender::Quick::QScene2D::RenderPolicy policy)

Notifier 信号:

void renderPolicyChanged(Qt3DRender::Quick::QScene2D::RenderPolicy policy)

成员函数 文档

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

构造函数使用指定的parent 创建一个新的 QScene2D 实例。

void QScene2D::addEntity(Qt3DCore::QEntity *entity)

QScene2D 对象添加一个entity 。如果实体有QObjectPicker ,则该实体的拾取事件会发送到QScene2D ,并转换为鼠标事件。

QList<Qt3DCore::QEntity *> QScene2D::entities() const

检索与QScene2D 相关的实体。

void QScene2D::removeEntity(Qt3DCore::QEntity *entity)

QScene2D 对象中删除entity

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