Q3DScene Class
Q3DScene 类提供可视化三维场景的描述。更多
Header: | #include <Q3DScene> |
CMake.Q3DScene 类 | 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 场景包含一个活动相机和一个活动光源。可视化数据假定位于固定位置。
三维场景还会跟踪进行可视化渲染的视口、主三维数据可视化视图所在的视口中的主子视口以及数据的二维切片视图所在的辅助子视口。默认情况下,子视口的大小由Q3DScene 调整。要覆盖调整大小的行为,需要同时监听viewportChanged() 和slicingActiveChanged() 信号,并相应地重新计算子视口。
此外,该场景还具有跟踪辅助二维切片视图当前是否处于活动状态的标志。
注意: 并非所有可视化都支持辅助二维切片视图。
属性文档
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 属性中读取查询到的图形位置。
没有一个正确的三维坐标与特定的屏幕位置相匹配,因此为了保持一致,查询总是针对图形周围的一个不可见框的内侧进行。
注意: 条形图只允许在图形底层进行图形位置查询。
访问功能:
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
该属性用于保存视口中的辅助视口矩形。
在某些可视化效果中,辅助视口用于绘制二维切片视图。如果没有明确设置,它将等于QRect 。如果isSlicingActive() 是true
,它将等于viewport 。
注意: 如果二级子视口大于视口或位于视口之外,则会相应调整视口大小。
访问功能:
QRect | secondarySubViewport() const |
void | setSecondarySubViewport(const QRect &secondarySubViewport) |
通知信号:
void | secondarySubViewportChanged(const QRect &subViewport) |
secondarySubviewOnTop : bool
此属性表示在顶部绘制的是二维切片视图还是三维视图。
访问功能:
bool | isSecondarySubviewOnTop() const |
void | setSecondarySubviewOnTop(bool isSecondaryOnTop) |
通知信号:
void | secondarySubviewOnTopChanged(bool isSecondaryOnTop) |
selectionQueryPosition : QPoint
此属性用于保存用户输入的坐标,场景应将其作为选择项处理。
如果将此属性设置为invalidSelectionPoint() 以外的值,则图形会尝试在主视口内指定坐标处选择数据项、轴标签或自定义项。渲染结束后,该属性将返回默认状态invalidSelectionPoint() 。
访问功能:
QPoint | selectionQueryPosition() const |
void | setSelectionQueryPosition(const QPoint &point) |
Notifier 信号:
void | selectionQueryPositionChanged(const QPoint &position) |
另请参阅 QAbstract3DGraph::selectedElement 。
slicingActive : bool
此属性表示二维切片视图当前是否处于活动状态。
如果true
、QAbstract3DGraph::selectionMode ,则必须将QAbstract3DGraph::SelectionRow 或QAbstract3DGraph::SelectionColumn 设置为有效选择。
注意: 并非所有可视化都支持二维切片视图。
访问功能:
bool | isSlicingActive() const |
void | setSlicingActive(bool isSlicing) |
通知信号:
void | slicingActiveChanged(bool isSlicingActive) |
[read-only]
viewport : const 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
。
© 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.