Q3DScatter 类
Q3DScatter 类提供了渲染 3D 散点图的函数。更多...
头文件 | #include <Q3DScatter> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Graphs) target_link_libraries(mytarget PRIVATE Qt6::Graphs) |
qmake | QT += graphs |
继承自 | QAbstract3DGraph |
状态 | 技术预览 |
- 包括继承成员在内的所有成员列表
- Q3DScatter 是 Qt 图形 C++ 3D 类 的一部分。
属性
- axisX : QValue3DAxis*
- axisY : QValue3DAxis*
- axisZ : QValue3DAxis*
- selectedSeries : QScatter3DSeries* const
公共函数
Q3DScatter() | |
virtual | ~Q3DScatter() override |
void | addAxis(QValue3DAxis *axis) |
void | addSeries(QScatter3DSeries *series) |
QList<QValue3DAxis *> | axes() const |
QValue3DAxis * | axisX() const |
QValue3DAxis * | axisY() const |
QValue3DAxis * | axisZ() const |
void | releaseAxis(QValue3DAxis *axis) |
void | removeSeries(QScatter3DSeries *series) |
QScatter3DSeries * | selectedSeries() const |
QList<QScatter3DSeries *> | seriesList() const |
void | setAxisX(QValue3DAxis *axis) |
void | setAxisY(QValue3DAxis *axis) |
void | setAxisZ(QValue3DAxis *axis) |
信号
void | axisXChanged(QValue3DAxis *axis) |
void | axisYChanged(QValue3DAxis *axis) |
void | axisZChanged(QValue3DAxis *axis) |
void | selectedSeriesChanged(QScatter3DSeries *series) |
详细描述
此类允许开发人员在 3D 中渲染散点图,并通过旋转场景自由查看它们。通过按住鼠标右键并移动鼠标进行旋转。使用鼠标滚轮进行缩放。如果启用选择,则通过单击鼠标左键进行选择。可以通过单击鼠标滚轮将场景重置为默认相机视图。在触摸设备上,通过轻触并移动进行旋转,通过轻触并保持进行选择,通过捏合进行缩放。
如果没有为 Q3DScatter 显式设置轴,将创建没有标签的默认临时轴。可以通过轴访问器修改这些默认轴,但在设置任何轴为特定方向的明确值后,该方向的默认轴会被销毁。
Q3DScatter 支持同时显示多于一个序列。
如何构建最小 Q3DScatter 图图
首先,构建 Q3DScatter。由于我们在本例中将图形作为顶层窗口运行,我们需要清除默认设置的 Qt::FramelessWindowHint
标志
Q3DScatter scatter; scatter.setMinimumSize(QSize(256, 256));
现在 Q3DScatter 准备好接收要渲染的数据。添加一个包含 3 个 QVector3D 项的序列
QScatter3DSeries *series = new QScatter3DSeries; QScatterDataArray data; data << QScatterDataItem(0.5f, 0.5f, 0.5f) << QScatterDataItem(-0.3f, -0.5f, -0.4f) << QScatterDataItem(0.0f, -0.3f, 0.2f); series->dataProxy()->addItems(data); scatter.addSeries(series);
最后,你需要使其可见
scatter.show();
创建并显示此图形所需的完整代码是
#include <QtGraphs> int main(int argc, char **argv) { QApplication app(argc, argv); Q3DScatter scatter; scatter.setMinimumSize(QSize(256, 256)); QScatter3DSeries *series = new QScatter3DSeries; QScatterDataArray data; data << QScatterDataItem(0.5f, 0.5f, 0.5f) << QScatterDataItem(-0.3f, -0.5f, -0.4f) << QScatterDataItem(0.0f, -0.3f, 0.2f); series->dataProxy()->addItems(data); scatter.addSeries(series); scatter.show(); return app.exec(); }
这正是这几行代码所产生的结果
场景可以旋转,可以缩放,可以选择一个项目来查看其位置,但在这个最小代码示例中没有包含其他交互。你可以通过熟悉提供的示例来了解更多信息,例如简单的散点图。
另请参阅Q3DBars、Q3DSurface和Qt Graphs C++ 类库的 3D。
属性文档
axisX : QValue3DAxis*
此属性包含活动 x 轴。
将 axis 设置为活动 x 轴。隐含调用 addAxis() 将轴的所有权转移到此图上。
如果 axis 为空,则创建一个没有标签的临时默认轴,其范围自动调整。如果为同一方向设置另一个轴,则销毁此临时轴。
访问函数
QValue3DAxis * | axisX() const |
void | setAxisX(QValue3DAxis *axis) |
通知信号
void | axisXChanged(QValue3DAxis *axis) |
另请参阅addAxis() 和 releaseAxis。
axisY : QValue3DAxis*
此属性包含活动 y 轴。
将 axis 设置为活动 y 轴。隐含调用 addAxis() 将轴的所有权转移到此图上。
如果 axis 为空,则创建一个没有标签的临时默认轴,其范围自动调整。如果为同一方向设置另一个轴,则销毁此临时轴。
访问函数
QValue3DAxis * | axisY() const |
void | setAxisY(QValue3DAxis *axis) |
通知信号
void | axisYChanged(QValue3DAxis *axis) |
另请参阅addAxis() 和 releaseAxis。
axisZ : QValue3DAxis*
此属性包含活动 z 轴。
将 axis 设置为活动 z 轴。隐含调用 addAxis() 将轴的所有权转移到此图上。
如果 axis 为空,则创建一个没有标签的临时默认轴,其范围自动调整。如果为同一方向设置另一个轴,则销毁此临时轴。
访问函数
QValue3DAxis * | axisZ() const |
void | setAxisZ(QValue3DAxis *axis) |
通知信号
void | axisZChanged(QValue3DAxis *axis) |
另请参阅addAxis() 和 releaseAxis。
[只读]
selectedSeries : QScatter3DSeries* const
此属性包含选定的序列或 null。
访问函数
QScatter3DSeries * | selectedSeries() const |
通知信号
void | selectedSeriesChanged(QScatter3DSeries *series) |
成员函数文档
Q3DScatter::Q3DScatter()
构建一个新的 3D 散点图。
[重写虚函数 noexcept]
Q3DScatter::~Q3DScatter()
销毁3D散点图。
void Q3DScatter::addAxis(QValue3DAxis *axis)
将axis添加到图中。通过addAxis添加的轴尚未投入使用,addAxis仅用于将axis的所有权赋予图表。该axis不能为空或添加到另一图表。
另见 releaseAxis(),setAxisX(),setAxisY()和setAxisZ()。
void Q3DScatter::addSeries(QScatter3DSeries *series)
将series添加到图中。一个图可以包含多个系列,但只有一个轴集合。如果新添加的系列指定了选中项,它将被突出显示,任何现有的选中项将被清除。只有添加的一个系列可以有活动选中状态。
另见 QAbstract3DGraph::hasSeries()。
QList<QValue3DAxis *> Q3DScatter::axes() const
返回所有已添加轴的列表。
另见 addAxis()。
void Q3DScatter::releaseAxis(QValue3DAxis *axis)
如果axis已添加到图中,则将axis的所有权归还给调用者。如果释放的axis正在使用中,将创建一个新的默认轴并将其设置为活动状态。
如果默认轴被释放并在之后再次添加,它将像任何其他轴一样表现。
另见 addAxis(),setAxisX(),setAxisY()和setAxisZ()。
void Q3DScatter::removeSeries(QScatter3DSeries *series)
从图中移除series。
另见 QAbstract3DGraph::hasSeries()。
QList<QScatter3DSeries *> Q3DScatter::seriesList() const
返回此图添加的系列列表。
© 2024 Qt公司有限公司。此处包含的文档贡献属于各自的版权所有者。此处提供的文档根据由自由软件基金会发布的GNU自由文档许可证版本1.3的条款进行许可。Qt和相应的标志是芬兰以及/或全球其他地区Qt公司有限公司的商标。所有其他商标属于其各自的所有者。