From 0e9ca837d1f177e22f1e567f2cc107abe9d03afb Mon Sep 17 00:00:00 2001 From: Andrey Bychkov Date: Mon, 23 Oct 2023 18:59:16 +0300 Subject: [PATCH] QAD::Graphic3D --- cmake/FindQAD.cmake | 4 +++- libs/graphic3d/scatter3d.cpp | 11 ++++++++--- libs/graphic3d/scatter3d.h | 10 +++++++--- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/cmake/FindQAD.cmake b/cmake/FindQAD.cmake index e9e3a1d..68fbdb4 100644 --- a/cmake/FindQAD.cmake +++ b/cmake/FindQAD.cmake @@ -7,6 +7,7 @@ Create imported targets: * QAD::Blockview * QAD::Graphic * QAD::GraphicAnalysis + * QAD::Graphic3D * QAD::SQLTable * QAD::TouchWidgets * QAD::Doc @@ -45,7 +46,7 @@ if(QAD_FIND_VERSION VERSION_GREATER QAD_VERSION) message(FATAL_ERROR "QAD version ${QAD_VERSION} is available, but ${QAD_FIND_VERSION} requested!") endif() -set(__libs "utils;widgets;application;blockview;graphic;graphic_analysis;sql;sql_table;touch_widgets;doc;map") +set(__libs "utils;widgets;application;blockview;graphic;graphic_analysis;graphic3d;sql;sql_table;touch_widgets;doc;map") if (PIP_FOUND OR BUILDING_PIP) list(APPEND __libs "piqt;piqt_utils") endif() @@ -56,6 +57,7 @@ set(__module_application Application ) set(__module_blockview Blockview ) set(__module_graphic Graphic ) set(__module_graphic_analysis GraphicAnalysis) +set(__module_graphic3d Graphic3D ) set(__module_sql SQL ) set(__module_sql_table SQLTable ) set(__module_touch_widgets TouchWidgets ) diff --git a/libs/graphic3d/scatter3d.cpp b/libs/graphic3d/scatter3d.cpp index 4f07246..4f1a465 100644 --- a/libs/graphic3d/scatter3d.cpp +++ b/libs/graphic3d/scatter3d.cpp @@ -20,7 +20,7 @@ Scatter3D::Scatter3D(QWidget * parent): QWidget{parent} { Scatter3D::~Scatter3D() { - clear(); +// clear(); canvas->setParent(nullptr); canvas->deleteLater(); } @@ -114,7 +114,7 @@ void Scatter3D::setLabelAutoRotation(bool on) { void Scatter3D::setGraphicData(const QVector & points, int index) { - auto arr = new QtDataVisualization::QScatterDataArray(); + auto arr = new DataArray(); arr->reserve(points.size()); for (const auto & p: points) { arr->append(p); @@ -124,7 +124,12 @@ void Scatter3D::setGraphicData(const QVector & points, int index) { } +void Scatter3D::setGraphicData(DataArray * newArray, int index) { + graphics[index].data->resetArray(newArray); + container->update(); +} + + void Scatter3D::addPoint(const QVector3D & point, int index) { graphics[index].data->addItem(point); } - diff --git a/libs/graphic3d/scatter3d.h b/libs/graphic3d/scatter3d.h index 97f2d6f..ae5379a 100644 --- a/libs/graphic3d/scatter3d.h +++ b/libs/graphic3d/scatter3d.h @@ -17,8 +17,8 @@ along with this program. If not, see . */ -#ifndef SCATTER_H -#define SCATTER_H +#ifndef SCATTER3D_H +#define SCATTER3D_H #include "qad_graphic3d_export.h" @@ -29,12 +29,14 @@ namespace QtDataVisualization { class Q3DScatter; class QScatterDataProxy; class QScatter3DSeries; +class QScatterDataItem; } // namespace QtDataVisualization class QAD_GRAPHIC3D_EXPORT Scatter3D: public QWidget { Q_OBJECT using Mesh = QtDataVisualization::QAbstract3DSeries::Mesh; + using DataArray = QVector; Q_PROPERTY(int currentGraphic READ currentGraphic WRITE setCurrentGraphic) Q_PROPERTY(int graphicsCount READ graphicsCount WRITE setGraphicsCount) @@ -71,6 +73,8 @@ public slots: void setLabelAutoRotation(bool on); void setGraphicData(const QVector & points, int index); void setGraphicData(const QVector & points) { setGraphicData(points, curGraphic); } + void setGraphicData(DataArray *newArray, int index); + void setGraphicData(DataArray *newArray) { setGraphicData(newArray, curGraphic); } void addPoint(const QVector3D & point, int index); void addPoint(const QVector3D & point) { addPoint(point, curGraphic); } @@ -87,4 +91,4 @@ private: int curGraphic; }; -#endif // SCATTER_H +#endif // SCATTER3D_H