本页内容

Q3DCamera Class

相机在三维空间中的表示。更多内容...

标题: #include <Q3DCamera>
CMake: find_package(Qt6 REQUIRED COMPONENTS DataVisualization)
target_link_libraries(mytarget PRIVATE Qt6::DataVisualization)
qmake: QT += datavisualization
自: QtDataVisualization 1.0
在 QML 中: Camera3D
继承自: Q3DObject
状态: 已弃用

该类已弃用。我们强烈建议不要在新代码中使用它。

公共类型

enum CameraPreset { CameraPresetNone, CameraPresetFrontLow, CameraPresetFront, CameraPresetFrontHigh, CameraPresetLeftLow, …, CameraPresetDirectlyBelow }

属性

公共函数

Q3DCamera(QObject *parent = nullptr)
virtual ~Q3DCamera()
Q3DCamera::CameraPreset cameraPreset() const
float maxZoomLevel() const
float minZoomLevel() const
void setCameraPosition(float horizontal, float vertical, float zoom = 100.0f)
void setCameraPreset(Q3DCamera::CameraPreset preset)
void setMaxZoomLevel(float zoomLevel)
void setMinZoomLevel(float zoomLevel)
void setTarget(const QVector3D &target)
void setWrapXRotation(bool isEnabled)
void setWrapYRotation(bool isEnabled)
void setXRotation(float rotation)
void setYRotation(float rotation)
void setZoomLevel(float zoomLevel)
QVector3D target() const
bool wrapXRotation() const
bool wrapYRotation() const
float xRotation() const
float yRotation() const
float zoomLevel() const

重新实现的公共函数

virtual void copyValuesFrom(const Q3DObject &source) override

信号

void cameraPresetChanged(Q3DCamera::CameraPreset preset)
void maxZoomLevelChanged(float zoomLevel)
void minZoomLevelChanged(float zoomLevel)
void targetChanged(const QVector3D &target)
void wrapXRotationChanged(bool isEnabled)
void wrapYRotationChanged(bool isEnabled)
void xRotationChanged(float rotation)
void yRotationChanged(float rotation)
void zoomLevelChanged(float zoomLevel)

详细说明

Q3DCamera 表示一个围绕中心点旋转的基本 3D 摄像机,用于渲染数据可视化。该类提供了用于围绕原点旋转摄像机以及设置缩放级别的简单方法。

成员类型文档

enum Q3DCamera::CameraPreset

摄像机的预设位置。

常量值描述
Q3DCamera::CameraPresetNone-1用于指示未设置预设,或者场景已被自由旋转。
Q3DCamera::CameraPresetFrontLow0 
Q3DCamera::CameraPresetFront1 
Q3DCamera::CameraPresetFrontHigh2 
Q3DCamera::CameraPresetLeftLow3 
Q3DCamera::CameraPresetLeft4 
Q3DCamera::CameraPresetLeftHigh5 
Q3DCamera::CameraPresetRightLow6 
Q3DCamera::CameraPresetRight7 
Q3DCamera::CameraPresetRightHigh8 
Q3DCamera::CameraPresetBehindLow9 
Q3DCamera::CameraPresetBehind10 
Q3DCamera::CameraPresetBehindHigh11 
Q3DCamera::CameraPresetIsometricLeft12 
Q3DCamera::CameraPresetIsometricLeftHigh13 
Q3DCamera::CameraPresetIsometricRight14 
Q3DCamera::CameraPresetIsometricRightHigh15 
Q3DCamera::CameraPresetDirectlyAbove16 
Q3DCamera::CameraPresetDirectlyAboveCW4517 
Q3DCamera::CameraPresetDirectlyAboveCCW4518 
Q3DCamera::CameraPresetFrontBelow19在 Q3DBars 中,从 CameraPresetFrontBelow 开始,这些设置仅适用于包含负值的图表。对于仅包含正值的图表,它们的作用与 Preset...Low 相同。
Q3DCamera::CameraPresetLeftBelow20 
Q3DCamera::CameraPresetRightBelow21 
Q3DCamera::CameraPresetBehindBelow22 
Q3DCamera::CameraPresetDirectlyBelow23对于仅包含正值的柱状图,其作用等同于 CameraPresetFrontLow。

属性文档

cameraPreset : CameraPreset

该属性存储当前激活的摄像机预设。

如果未设置CameraPreset 值,则默认使用CameraPresetNone 。

访问函数:

Q3DCamera::CameraPreset cameraPreset() const
void setCameraPreset(Q3DCamera::CameraPreset preset)

通知信号:

void cameraPresetChanged(Q3DCamera::CameraPreset preset)

maxZoomLevel : float

该属性用于指定相机允许的最大变焦级别。

如果将最大级别设置为一个新值,且该值低于现有的最小级别,则最小级别也会相应调整为新的最大级别。如果当前的zoomLevel 超出了新范围,它也会被相应调整。默认值为500.0f 。

访问函数:

float maxZoomLevel() const
void setMaxZoomLevel(float zoomLevel)

通知信号:

void maxZoomLevelChanged(float zoomLevel)

另请参阅 zoomLevel 和minZoomLevel 。

minZoomLevel : float

该属性用于指定允许的最低相机变焦级别。

如果将最小级别设置为高于现有最大级别的新值,则最大级别也会相应调整为新的最小级别。如果当前的zoomLevel 超出了新范围,它也会被相应调整。minZoomLevel不能设置为低于1.0f 。默认值为10.0f 。

访问函数:

float minZoomLevel() const
void setMinZoomLevel(float zoomLevel)

通知信号:

void minZoomLevelChanged(float zoomLevel)

另请参阅 zoomLevel 和maxZoomLevel 。

[since QtDataVisualization 1.2] target : QVector3D

该属性将摄像机目标作为三维空间中的向量或顶点存储。

默认值为QVector3D(0.0, 0.0, 0.0) 。

有效的坐标值范围为-1.0...1.0 ,其中边界值表示相应轴范围的边界。超出此范围的任何值都会被限制在边界上。

注意:对于 条形图,Y 坐标将被忽略,相机始终对准水平背景上的一个点。

此枚举类型在 QtDataVisualization 1.2 中引入。

访问函数:

QVector3D target() const
void setTarget(const QVector3D &target)

通知器信号:

void targetChanged(const QVector3D &target)

wrapXRotation : bool

该属性控制 X 轴旋转的最小值和最大值的行为。

若设置为true ,摄像机的X轴旋转将从最小值循环至最大值,再从最大值循环至最小值。若设置为false ,摄像机的X轴旋转将限制在由最小值和最大值确定的扇区内。默认设置为true 。

访问函数:

bool wrapXRotation() const
void setWrapXRotation(bool isEnabled)

通知信号:

void wrapXRotationChanged(bool isEnabled)

wrapYRotation : bool

此属性控制 Y 轴旋转的最小值和最大值的行为。

若true ,摄像机的Y轴旋转将在最小值和最大值之间循环;若false ,摄像机的Y轴旋转将限制在由最小值和最大值确定的扇形区域内。默认设置为true 。

访问函数:

bool wrapYRotation() const
void setWrapYRotation(bool isEnabled)

通知信号:

void wrapYRotationChanged(bool isEnabled)

xRotation : float

该属性存储了摄像机围绕目标点进行的X轴旋转角度(单位:度)。

访问函数:

float xRotation() const
void setXRotation(float rotation)

通知信号:

void xRotationChanged(float rotation)

yRotation : float

该属性存储了摄像机围绕目标点进行的 Y 轴旋转角度(单位为度)。

访问函数:

float yRotation() const
void setYRotation(float rotation)

通知信号:

void yRotationChanged(float rotation)

zoomLevel : float

该属性以百分比形式存储摄像机的变焦级别。

100.0f 的默认值表示相机未设置任何缩放比例。该值受minZoomLevel 和maxZoomLevel 属性的限制。

访问函数:

float zoomLevel() const
void setZoomLevel(float zoomLevel)

通知信号:

void zoomLevelChanged(float zoomLevel)

另请参阅 minZoomLevel 和maxZoomLevel 。

成员函数文档

[explicit] Q3DCamera::Q3DCamera(QObject *parent = nullptr)

创建一个新的 3D 摄像机,其位置默认为原点,向上方向朝向 Y 轴,且默认视线指向原点。可以提供可选的 `parent ` 参数,该参数随后将传递给 `QObject ` 构造函数。

[virtual noexcept] Q3DCamera::~Q3DCamera()

销毁相机对象。

[override virtual] void Q3DCamera::copyValuesFrom(const Q3DObject &source)

重写:Q3DObject::copyValuesFrom(const Q3DObject &source)。

从给定的源摄像机复制 3D 摄像机的属性。值将从source 复制到此对象。

void Q3DCamera::setCameraPosition(float horizontal, float vertical, float zoom = 100.0f)

用于设置相机旋转和距离的辅助函数。horizontal 和vertical 定义了要使用的相机旋转角度。可选参数zoom 用于在minZoomLevel 和maxZoomLevel 属性定义的范围内设置相机的缩放比例。

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