Q3DScene Class
Q3DScene 类提供了对正在可视化的 3D 场景的描述。更多内容...
| 头文件: | #include <Q3DScene> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS DataVisualization) target_link_libraries(mytarget PRIVATE Qt6::DataVisualization) |
| qmake: | QT += datavisualization |
| 自: | QtDataVisualization 1.0 |
| 在 QML 中: | Scene3D |
| 继承自: | QObject |
| 状态: | 已弃用 |
该类已弃用。我们强烈建议不要在新代码中使用它。
属性
|
|
公共函数
| Q3DScene(QObject *parent = nullptr) | |
| virtual | ~Q3DScene() |
| Q3DCamera * | activeCamera() const |
| Q3DLight * | activeLight() const |
| float | devicePixelRatio() const |
| QPoint | graphPositionQuery() const |
| bool | isPointInPrimarySubView(const QPoint &point) |
| bool | isPointInSecondarySubView(const QPoint &point) |
| bool | isSecondarySubviewOnTop() const |
| bool | isSlicingActive() const |
| QRect | primarySubViewport() const |
| QRect | secondarySubViewport() const |
| QPoint | selectionQueryPosition() const |
| void | setActiveCamera(Q3DCamera *camera) |
| void | setActiveLight(Q3DLight *light) |
| void | setDevicePixelRatio(float pixelRatio) |
| void | setGraphPositionQuery(const QPoint &point) |
| void | setPrimarySubViewport(const QRect &primarySubViewport) |
| void | setSecondarySubViewport(const QRect &secondarySubViewport) |
| void | setSecondarySubviewOnTop(bool isSecondaryOnTop) |
| void | setSelectionQueryPosition(const QPoint &point) |
| void | setSlicingActive(bool isSlicing) |
| QRect | viewport() const |
信号
| void | activeCameraChanged(Q3DCamera *camera) |
| void | activeLightChanged(Q3DLight *light) |
| void | devicePixelRatioChanged(float pixelRatio) |
| void | graphPositionQueryChanged(const QPoint &position) |
| void | primarySubViewportChanged(const QRect &subViewport) |
| void | secondarySubViewportChanged(const QRect &subViewport) |
| void | secondarySubviewOnTopChanged(bool isSecondaryOnTop) |
| void | selectionQueryPositionChanged(const QPoint &position) |
| void | slicingActiveChanged(bool isSlicingActive) |
| void | viewportChanged(const QRect &viewport) |
静态公共成员
| QPoint | invalidSelectionPoint() |
详细说明
该 3D 场景包含一个活动摄像机和一个活动光源。假设可视化数据位于固定位置。
该 3D 场景还会跟踪用于可视化渲染的视口、视口内用于显示主 3D 数据可视化视图的主子视口,以及用于显示数据 2D 切片视图的次级子视口。 默认情况下,子视口的大小由Q3DScene 控制。若要覆盖此调整大小行为,您需要监听viewportChanged()和slicingActiveChanged()这两个信号,并据此重新计算子视口的大小。
此外,场景中还设有一个标志,用于跟踪辅助 2D 切片视图当前是否处于活动状态。
注意:并非 所有可视化功能都支持辅助 2D 切片视图。
属性文档
activeCamera : Q3DCamera*
该属性存储3D场景中当前活动的摄像机。
当设置新的 Q3DCamera 对象时,它会自动作为场景的子节点添加。
访问函数:
| Q3DCamera * | activeCamera() const |
| void | setActiveCamera(Q3DCamera *camera) |
通知信号:
| void | activeCameraChanged(Q3DCamera *camera) |
activeLight : Q3DLight*
该属性存储3D场景中当前处于活动状态的光源。
当设置新的 Q3DLight 对象时,它会自动作为场景的子对象被添加。
访问函数:
| Q3DLight * | activeLight() const |
| void | setActiveLight(Q3DLight *light) |
通知信号:
| void | activeLightChanged(Q3DLight *light) |
devicePixelRatio : float
该属性存储了将输入坐标映射到像素坐标时所使用的设备像素比。
访问函数:
| float | devicePixelRatio() const |
| void | setDevicePixelRatio(float pixelRatio) |
通知信号:
| void | devicePixelRatioChanged(float pixelRatio) |
graphPositionQuery : QPoint
该属性存储了用户输入的坐标,场景将把这些坐标作为图形位置查询进行处理。
如果该属性被设置为invalidSelectionPoint() 以外的值,图形将尝试在主视口内将指定坐标与图形位置进行匹配。渲染过程完成后,该属性将恢复为默认状态invalidSelectionPoint()。在接下来的渲染过程之后,可从QAbstract3DGraph::queriedGraphPosition 属性中读取查询到的图形位置。
由于不存在与特定屏幕位置完全对应的唯一正确 3D 坐标,因此为保持一致性,查询始终针对包围图表的不可见框体的内侧进行。
注意:条形图 仅允许在图表底边高度进行位置查询。
访问函数:
| QPoint | graphPositionQuery() const |
| void | setGraphPositionQuery(const QPoint &point) |
通知器信号:
| void | graphPositionQueryChanged(const QPoint &position) |
另请参阅 QAbstract3DGraph::queriedGraphPosition 。
primarySubViewport : QRect
该属性保存数据可视化主视图所针对的视口内的当前子视口矩形。
如果 `isSlicingActive()` 的值为 `false`,则主子视口等于 `viewport()`。如果 `isSlicingActive()` 的值为 `true `,且主子视口尚未被显式设置,则其大小将为 `viewport()` 的五分之一。
注意:若将 primarySubViewport设置为 大于或超出视口范围,视口将相应地调整大小。
访问函数:
| QRect | primarySubViewport() const |
| void | setPrimarySubViewport(const QRect &primarySubViewport) |
通知器信号:
| void | primarySubViewportChanged(const QRect &subViewport) |
secondarySubViewport : QRect
该属性用于在视口内保存辅助视口矩形。
辅助视口用于在某些可视化中绘制 2D 切片视图。如果未显式设置,则其值将等于QRect 。如果isSlicingActive() 的返回值为true ,则其值将等于viewport 。
注意:如果 次级子视口大于视口或位于视口之外,则视口将相应地调整大小。
访问函数:
| QRect | secondarySubViewport() const |
| void | setSecondarySubViewport(const QRect &secondarySubViewport) |
通知器信号:
| void | secondarySubViewportChanged(const QRect &subViewport) |
secondarySubviewOnTop : bool
该属性决定了是2D切片视图还是3D视图显示在最上方。
访问函数:
| bool | isSecondarySubviewOnTop() const |
| void | setSecondarySubviewOnTop(bool isSecondaryOnTop) |
通知信号:
| void | secondarySubviewOnTopChanged(bool isSecondaryOnTop) |
selectionQueryPosition : QPoint
该属性存储用户输入的坐标,场景应将该坐标作为选区进行处理。
如果该属性设置为invalidSelectionPoint()以外的值,则图形将尝试在主视口内指定坐标处选中一个数据项、轴标签或自定义项。渲染过程结束后,该属性将恢复为默认状态invalidSelectionPoint()。
访问函数:
| QPoint | selectionQueryPosition() const |
| void | setSelectionQueryPosition(const QPoint &point) |
通知信号:
| void | selectionQueryPositionChanged(const QPoint &position) |
另请参阅 QAbstract3DGraph::selectedElement 。
slicingActive : bool
该属性表示 2D 切片视图当前是否处于活动状态。
如果true ,则QAbstract3DGraph::selectionMode 必须将QAbstract3DGraph::SelectionRow 或QAbstract3DGraph::SelectionColumn 设置为有效的选择项。
注意:并非 所有可视化都支持 2D 切片视图。
访问函数:
| bool | isSlicingActive() const |
| void | setSlicingActive(bool isSlicing) |
通知信号:
| void | slicingActiveChanged(bool isSlicingActive) |
[read-only] viewport : QRect
该属性包含一个只读属性,其中存储了当前视口矩形,所有 3D 渲染均以此为目标。
访问函数:
| QRect | viewport() const |
通知器信号:
| void | viewportChanged(const QRect &viewport) |
成员函数文档
[explicit] Q3DScene::Q3DScene(QObject *parent = nullptr)
构建一个包含一盏灯和一台摄像机的基本场景。可以指定可选的parent 参数,该参数随后将传递给QObject 构造函数。
[virtual noexcept] Q3DScene::~Q3DScene()
删除该3D场景及其所包含的所有对象。
[static] QPoint Q3DScene::invalidSelectionPoint()
返回一个QPoint ,表示选择位置无效。
bool Q3DScene::isPointInPrimarySubView(const QPoint &point)
返回指定point 是否位于主子视图内部。如果该点位于主子视图内部,则返回true 。
注意:如果 子视图重叠,且给定的point 位于两个子视图之中,则只有当主子视图位于最上方时,结果才为true 。
bool Q3DScene::isPointInSecondarySubView(const QPoint &point)
返回指定point 是否位于二级子视图内。如果该点位于二级子视图内,则返回true 。
注意:如果 子视图重叠,且给定的point 同时位于两个子视图内,则只有当次要子视图位于最上方时,结果才为true 。
© 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.