diff options
7 files changed, 53 insertions, 2 deletions
diff --git a/src/datavisualization/doc/src/qtdatavisualization-qml-scatter3d.qdoc b/src/datavisualization/doc/src/qtdatavisualization-qml-scatter3d.qdoc index e583a807..3d367a77 100644 --- a/src/datavisualization/doc/src/qtdatavisualization-qml-scatter3d.qdoc +++ b/src/datavisualization/doc/src/qtdatavisualization-qml-scatter3d.qdoc @@ -103,3 +103,9 @@ \note Object needs to be in Wavefront obj format and include vertices, normals and UVs. It also needs to be in triangles. */ + +/*! + \qmlproperty int Scatter3D::selectedItemIndex + Selects an item in the \a index. Only one item can be selected at a time. + To clear selection, specify an illegal \a index, e.g. -1. + */ diff --git a/src/datavisualization/doc/src/qtdatavisualization-qml-surface3d.qdoc b/src/datavisualization/doc/src/qtdatavisualization-qml-surface3d.qdoc index c55b7ec1..b47408f2 100644 --- a/src/datavisualization/doc/src/qtdatavisualization-qml-surface3d.qdoc +++ b/src/datavisualization/doc/src/qtdatavisualization-qml-surface3d.qdoc @@ -88,3 +88,12 @@ \qmlproperty ColorGradient Surface3D::gradient The current surface gradient. Setting this property replaces the previous gradient. */ + +/*! + \qmlproperty point Surface3D::selectedPoint + + Selects a surface grid point in a \a position. The position is the (row, column) position in + the data array of the active data proxy. + Only one point can be selected at a time. + To clear selection, specify an illegal \a position, e.g. (-1, -1). + */ diff --git a/src/datavisualizationqml2/declarativebars_p.h b/src/datavisualizationqml2/declarativebars_p.h index f71d9ad3..16fe6d1f 100644 --- a/src/datavisualizationqml2/declarativebars_p.h +++ b/src/datavisualizationqml2/declarativebars_p.h @@ -58,7 +58,6 @@ class DeclarativeBars : public AbstractDeclarative Q_PROPERTY(bool barSmoothingEnabled READ isBarSmoothingEnabled WRITE setBarSmoothingEnabled) Q_PROPERTY(QString meshFileName READ meshFileName WRITE setMeshFileName) Q_PROPERTY(QPointF selectedBar READ selectedBar WRITE setSelectedBar NOTIFY selectedBarChanged) - Q_ENUMS(QtDataVisualization::QDataVis::MeshStyle) public: explicit DeclarativeBars(QQuickItem *parent = 0); diff --git a/src/datavisualizationqml2/declarativescatter.cpp b/src/datavisualizationqml2/declarativescatter.cpp index 346abec2..a2ef9369 100644 --- a/src/datavisualizationqml2/declarativescatter.cpp +++ b/src/datavisualizationqml2/declarativescatter.cpp @@ -41,6 +41,9 @@ DeclarativeScatter::DeclarativeScatter(QQuickItem *parent) m_shared = new Scatter3DController(boundingRect().toRect()); setSharedController(m_shared); m_shared->setActiveDataProxy(new QItemModelScatterDataProxy); + + QObject::connect(m_shared, &Scatter3DController::selectedItemIndexChanged, this, + &DeclarativeScatter::selectedItemIndexChanged); } DeclarativeScatter::~DeclarativeScatter() @@ -165,4 +168,14 @@ QString DeclarativeScatter::meshFileName() const return m_shared->meshFileName(); } +void DeclarativeScatter::setSelectedItemIndex(int index) +{ + m_shared->setSelectedItemIndex(index); +} + +int DeclarativeScatter::selectedItemIndex() const +{ + return m_shared->selectedItemIndex(); +} + QT_DATAVISUALIZATION_END_NAMESPACE diff --git a/src/datavisualizationqml2/declarativescatter_p.h b/src/datavisualizationqml2/declarativescatter_p.h index cc16e770..922cf05e 100644 --- a/src/datavisualizationqml2/declarativescatter_p.h +++ b/src/datavisualizationqml2/declarativescatter_p.h @@ -53,7 +53,7 @@ class DeclarativeScatter : public AbstractDeclarative Q_PROPERTY(bool objectSmoothingEnabled READ isObjectSmoothingEnabled WRITE setObjectSmoothingEnabled) Q_PROPERTY(QString meshFileName READ meshFileName WRITE setMeshFileName) Q_PROPERTY(QString itemLabelFormat READ itemLabelFormat WRITE setItemLabelFormat) - Q_ENUMS(QtDataVisualization::QDataVis::MeshStyle) + Q_PROPERTY(int selectedItemIndex READ selectedItemIndex WRITE setSelectedItemIndex NOTIFY selectedItemIndexChanged) public: explicit DeclarativeScatter(QQuickItem *parent = 0); @@ -80,6 +80,12 @@ public: void setMeshFileName(const QString &objFileName); QString meshFileName() const; + void setSelectedItemIndex(int index); + int selectedItemIndex() const; + +signals: + void selectedItemIndexChanged(int index); + protected: Scatter3DController *m_shared; QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *); diff --git a/src/datavisualizationqml2/declarativesurface.cpp b/src/datavisualizationqml2/declarativesurface.cpp index 9ace6c55..a4cf1195 100644 --- a/src/datavisualizationqml2/declarativesurface.cpp +++ b/src/datavisualizationqml2/declarativesurface.cpp @@ -46,6 +46,9 @@ DeclarativeSurface::DeclarativeSurface(QQuickItem *parent) QItemModelSurfaceDataProxy *proxy = new QItemModelSurfaceDataProxy; m_shared->setActiveDataProxy(proxy); + + QObject::connect(m_shared, &Surface3DController::selectedPointChanged, this, + &DeclarativeSurface::selectedPointChanged); } DeclarativeSurface::~DeclarativeSurface() @@ -167,6 +170,16 @@ ColorGradient *DeclarativeSurface::gradient() const return m_gradient; } +void DeclarativeSurface::setSelectedPoint(const QPointF &position) +{ + m_shared->setSelectedPoint(position.toPoint()); +} + +QPointF DeclarativeSurface::selectedPoint() const +{ + return QPointF(m_shared->selectedPoint()); +} + void DeclarativeSurface::setControllerGradient(const ColorGradient &gradient) { QLinearGradient newGradient; diff --git a/src/datavisualizationqml2/declarativesurface_p.h b/src/datavisualizationqml2/declarativesurface_p.h index 6e35b3b3..3d911f43 100644 --- a/src/datavisualizationqml2/declarativesurface_p.h +++ b/src/datavisualizationqml2/declarativesurface_p.h @@ -54,6 +54,7 @@ class DeclarativeSurface : public AbstractDeclarative Q_PROPERTY(bool smoothSurfaceEnabled READ isSmoothSurfaceEnabled WRITE setSmoothSurfaceEnabled NOTIFY smoothSurfaceEnabledChanged) Q_PROPERTY(bool surfaceGridEnabled READ isSurfaceGridEnabled WRITE setSurfaceGridEnabled) Q_PROPERTY(ColorGradient *gradient READ gradient WRITE setGradient) + Q_PROPERTY(QPointF selectedPoint READ selectedPoint WRITE setSelectedPoint NOTIFY selectedPointChanged) public: explicit DeclarativeSurface(QQuickItem *parent = 0); @@ -78,8 +79,12 @@ public: void setGradient(ColorGradient *gradient); ColorGradient *gradient() const; + void setSelectedPoint(const QPointF &position); + QPointF selectedPoint() const; + signals: void smoothSurfaceEnabledChanged(bool enabled); + void selectedPointChanged(QPoint position); protected: void handleGradientUpdate(); |