summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/datavisualization/doc/src/qtdatavisualization-qml-bars3d.qdoc6
-rw-r--r--src/datavisualization/doc/src/qtdatavisualization-qml-scatter3d.qdoc11
-rw-r--r--src/datavisualization/doc/src/qtdatavisualization-qml-surface3d.qdoc11
-rw-r--r--src/datavisualization/engine/bars3dcontroller.cpp4
-rw-r--r--src/datavisualization/engine/bars3dcontroller_p.h6
-rw-r--r--src/datavisualization/engine/q3dbars.cpp13
-rw-r--r--src/datavisualization/engine/q3dbars.h4
-rw-r--r--src/datavisualization/engine/q3dscatter.cpp12
-rw-r--r--src/datavisualization/engine/q3dscatter.h4
-rw-r--r--src/datavisualization/engine/q3dsurface.cpp13
-rw-r--r--src/datavisualization/engine/q3dsurface.h4
-rw-r--r--src/datavisualization/engine/qabstract3dgraph.cpp2
-rw-r--r--src/datavisualization/engine/scatter3dcontroller.cpp4
-rw-r--r--src/datavisualization/engine/scatter3dcontroller_p.h5
-rw-r--r--src/datavisualization/engine/surface3dcontroller.cpp4
-rw-r--r--src/datavisualization/engine/surface3dcontroller_p.h5
-rw-r--r--src/datavisualizationqml2/declarativebars.cpp7
-rw-r--r--src/datavisualizationqml2/declarativebars_p.h4
-rw-r--r--src/datavisualizationqml2/declarativescatter.cpp8
-rw-r--r--src/datavisualizationqml2/declarativescatter_p.h4
-rw-r--r--src/datavisualizationqml2/declarativesurface.cpp19
-rw-r--r--src/datavisualizationqml2/declarativesurface_p.h4
22 files changed, 141 insertions, 13 deletions
diff --git a/src/datavisualization/doc/src/qtdatavisualization-qml-bars3d.qdoc b/src/datavisualization/doc/src/qtdatavisualization-qml-bars3d.qdoc
index aaafe217..443cebf6 100644
--- a/src/datavisualization/doc/src/qtdatavisualization-qml-bars3d.qdoc
+++ b/src/datavisualization/doc/src/qtdatavisualization-qml-bars3d.qdoc
@@ -93,6 +93,12 @@
*/
/*!
+ * \qmlproperty Bar3DSeries Bars3D::selectedSeries
+ * The selected series or \c null. If \l {QAbstract3DGraph::selectionMode}{selectionMode} has
+ * \c SelectionMultiSeries flag set, this property holds the series which owns the selected bar.
+ */
+
+/*!
* \qmlproperty list<Bar3DSeries> Bars3D::seriesList
* \default
* This property holds the series of the graph.
diff --git a/src/datavisualization/doc/src/qtdatavisualization-qml-scatter3d.qdoc b/src/datavisualization/doc/src/qtdatavisualization-qml-scatter3d.qdoc
index b969c536..76f68af4 100644
--- a/src/datavisualization/doc/src/qtdatavisualization-qml-scatter3d.qdoc
+++ b/src/datavisualization/doc/src/qtdatavisualization-qml-scatter3d.qdoc
@@ -72,7 +72,12 @@
*/
/*!
- * \qmlproperty list<QScatter3DSeries> Scatter3D::seriesList
+ * \qmlproperty Scatter3DSeries Scatter3D::selectedSeries
+ * The selected series or \c null.
+ */
+
+/*!
+ * \qmlproperty list<Scatter3DSeries> Scatter3D::seriesList
* \default
* This property holds the series of the graph.
* By default, this property contains an empty list.
@@ -80,13 +85,13 @@
*/
/*!
- * \qmlmethod void Scatter3D::addSeries(QScatter3DSeries *series)
+ * \qmlmethod void Scatter3D::addSeries(Scatter3DSeries series)
* Adds the \a series to the graph. A graph can contain multiple series, but has only one set of
* axes. If the newly added series has specified a selected item, it will be highlighted and
* any existing selection will be cleared. Only one added series can have an active selection.
*/
/*!
- * \qmlmethod void Scatter3D::removeSeries(QScatter3DSeries *series)
+ * \qmlmethod void Scatter3D::removeSeries(Scatter3DSeries series)
* Remove the \a series from the graph.
*/
diff --git a/src/datavisualization/doc/src/qtdatavisualization-qml-surface3d.qdoc b/src/datavisualization/doc/src/qtdatavisualization-qml-surface3d.qdoc
index 3011336b..0cc2a5ab 100644
--- a/src/datavisualization/doc/src/qtdatavisualization-qml-surface3d.qdoc
+++ b/src/datavisualization/doc/src/qtdatavisualization-qml-surface3d.qdoc
@@ -72,13 +72,18 @@
*/
/*!
+ * \qmlproperty Surface3DSeries Surface3D::selectedSeries
+ * The selected series or \c null. If \l {QAbstract3DGraph::selectionMode}{selectionMode} has
+ * \c SelectionMultiSeries flag set, this property holds the series which owns the selected point.
+ */
+
/*!
\qmlproperty ColorGradient Surface3D::gradient
The current surface gradient. Setting this property replaces the previous gradient.
*/
/*!
- * \qmlproperty list<QSurface3DSeries> Surface3D::seriesList
+ * \qmlproperty list<Surface3DSeries> Surface3D::seriesList
* \default
* This property holds the series of the graph.
* By default, this property contains an empty list.
@@ -87,12 +92,12 @@
*/
/*!
- * \qmlmethod void Surface3D::addSeries(QSurface3DSeries *series)
+ * \qmlmethod void Surface3D::addSeries(Surface3DSeries series)
* Adds the \a series to the graph.
* \note The surface graph currently supports only a single series at a time.
*/
/*!
- * \qmlmethod void Surface3D::removeSeries(QSurface3DSeries *series)
+ * \qmlmethod void Surface3D::removeSeries(Surface3DSeries series)
* Remove the \a series from the graph.
*/
diff --git a/src/datavisualization/engine/bars3dcontroller.cpp b/src/datavisualization/engine/bars3dcontroller.cpp
index c49a6bb0..c84c445b 100644
--- a/src/datavisualization/engine/bars3dcontroller.cpp
+++ b/src/datavisualization/engine/bars3dcontroller.cpp
@@ -472,6 +472,7 @@ void Bars3DController::setSelectedBar(const QPoint &position, QBar3DSeries *seri
}
if (pos != m_selectedBar || series != m_selectedBarSeries) {
+ bool seriesChanged = (series != m_selectedBarSeries);
m_selectedBar = pos;
m_selectedBarSeries = series;
m_changeTracker.selectedBarChanged = true;
@@ -485,6 +486,9 @@ void Bars3DController::setSelectedBar(const QPoint &position, QBar3DSeries *seri
if (m_selectedBarSeries)
m_selectedBarSeries->dptr()->setSelectedBar(m_selectedBar);
+ if (seriesChanged)
+ emit selectedSeriesChanged(m_selectedBarSeries);
+
emitNeedRender();
}
}
diff --git a/src/datavisualization/engine/bars3dcontroller_p.h b/src/datavisualization/engine/bars3dcontroller_p.h
index d41af02d..9ea59c89 100644
--- a/src/datavisualization/engine/bars3dcontroller_p.h
+++ b/src/datavisualization/engine/bars3dcontroller_p.h
@@ -94,11 +94,14 @@ public:
QSizeF barSpacing();
bool isBarSpecRelative();
+ inline QBar3DSeries *selectedSeries() const { return m_selectedBarSeries; }
+
void setSelectionMode(QAbstract3DGraph::SelectionFlags mode);
void setSelectedBar(const QPoint &position, QBar3DSeries *series, bool enterSlice);
virtual void clearSelection();
- virtual void handleAxisAutoAdjustRangeChangedInOrientation(QAbstract3DAxis::AxisOrientation orientation, bool autoAdjust);
+ virtual void handleAxisAutoAdjustRangeChangedInOrientation(
+ QAbstract3DAxis::AxisOrientation orientation, bool autoAdjust);
virtual void handleSeriesVisibilityChangedBySender(QObject *sender);
virtual void handlePendingClick();
@@ -128,6 +131,7 @@ public slots:
signals:
void primarySeriesChanged(QBar3DSeries *series);
+ void selectedSeriesChanged(QBar3DSeries *series);
protected:
virtual QAbstract3DAxis *createDefaultAxis(QAbstract3DAxis::AxisOrientation orientation);
diff --git a/src/datavisualization/engine/q3dbars.cpp b/src/datavisualization/engine/q3dbars.cpp
index 787033ad..7b37715f 100644
--- a/src/datavisualization/engine/q3dbars.cpp
+++ b/src/datavisualization/engine/q3dbars.cpp
@@ -104,6 +104,8 @@ Q3DBars::Q3DBars(const QSurfaceFormat *format, QWindow *parent)
dptr()->m_shared->initializeOpenGL();
QObject::connect(dptr()->m_shared, &Bars3DController::primarySeriesChanged,
this, &Q3DBars::primarySeriesChanged);
+ QObject::connect(dptr()->m_shared, &Bars3DController::selectedSeriesChanged,
+ this, &Q3DBars::selectedSeriesChanged);
}
/*!
@@ -328,6 +330,17 @@ QValue3DAxis *Q3DBars::valueAxis() const
}
/*!
+ * \property Q3DBars::selectedSeries
+ *
+ * The selected series or \c null. If selectionMode has \c SelectionMultiSeries flag set, this
+ * property holds the series which owns the selected bar.
+ */
+QBar3DSeries *Q3DBars::selectedSeries() const
+{
+ return dptrc()->m_shared->selectedSeries();
+}
+
+/*!
* Adds \a axis to the graph. The axes added via addAxis are not yet taken to use,
* addAxis is simply used to give the ownership of the \a axis to the graph.
* The \a axis must not be null or added to another graph.
diff --git a/src/datavisualization/engine/q3dbars.h b/src/datavisualization/engine/q3dbars.h
index 06dcfedb..97e7c067 100644
--- a/src/datavisualization/engine/q3dbars.h
+++ b/src/datavisualization/engine/q3dbars.h
@@ -42,6 +42,7 @@ class QT_DATAVISUALIZATION_EXPORT Q3DBars : public QAbstract3DGraph
Q_PROPERTY(QCategory3DAxis *columnAxis READ columnAxis WRITE setColumnAxis NOTIFY columnAxisChanged)
Q_PROPERTY(QValue3DAxis *valueAxis READ valueAxis WRITE setValueAxis NOTIFY valueAxisChanged)
Q_PROPERTY(QBar3DSeries *primarySeries READ primarySeries WRITE setPrimarySeries NOTIFY primarySeriesChanged)
+ Q_PROPERTY(QBar3DSeries *selectedSeries READ selectedSeries NOTIFY selectedSeriesChanged)
public:
explicit Q3DBars(const QSurfaceFormat *format = 0, QWindow *parent = 0);
@@ -76,6 +77,8 @@ public:
void releaseAxis(QAbstract3DAxis *axis);
QList<QAbstract3DAxis *> axes() const;
+ QBar3DSeries *selectedSeries() const;
+
signals:
void multiSeriesUniformChanged(bool uniform);
void barThicknessChanged(float thicknessRatio);
@@ -85,6 +88,7 @@ signals:
void columnAxisChanged(QCategory3DAxis *axis);
void valueAxisChanged(QValue3DAxis *axis);
void primarySeriesChanged(QBar3DSeries *series);
+ void selectedSeriesChanged(QBar3DSeries *series);
private:
Q3DBarsPrivate *dptr();
diff --git a/src/datavisualization/engine/q3dscatter.cpp b/src/datavisualization/engine/q3dscatter.cpp
index db7d2491..7c7809f3 100644
--- a/src/datavisualization/engine/q3dscatter.cpp
+++ b/src/datavisualization/engine/q3dscatter.cpp
@@ -87,6 +87,8 @@ Q3DScatter::Q3DScatter(const QSurfaceFormat *format, QWindow *parent)
dptr()->m_shared = new Scatter3DController(geometry());
d_ptr->setVisualController(dptr()->m_shared);
dptr()->m_shared->initializeOpenGL();
+ QObject::connect(dptr()->m_shared, &Scatter3DController::selectedSeriesChanged,
+ this, &Q3DScatter::selectedSeriesChanged);
}
/*!
@@ -202,6 +204,16 @@ QValue3DAxis *Q3DScatter::axisZ() const
}
/*!
+ * \property Q3DScatter::selectedSeries
+ *
+ * The selected series or \c null.
+ */
+QScatter3DSeries *Q3DScatter::selectedSeries() const
+{
+ return dptrc()->m_shared->selectedSeries();
+}
+
+/*!
* Adds \a axis to the graph. The axes added via addAxis are not yet taken to use,
* addAxis is simply used to give the ownership of the \a axis to the graph.
* The \a axis must not be null or added to another graph.
diff --git a/src/datavisualization/engine/q3dscatter.h b/src/datavisualization/engine/q3dscatter.h
index 55158537..2d8516ee 100644
--- a/src/datavisualization/engine/q3dscatter.h
+++ b/src/datavisualization/engine/q3dscatter.h
@@ -37,6 +37,7 @@ class QT_DATAVISUALIZATION_EXPORT Q3DScatter : public QAbstract3DGraph
Q_PROPERTY(QValue3DAxis *axisX READ axisX WRITE setAxisX NOTIFY axisXChanged)
Q_PROPERTY(QValue3DAxis *axisY READ axisY WRITE setAxisY NOTIFY axisYChanged)
Q_PROPERTY(QValue3DAxis *axisZ READ axisZ WRITE setAxisZ NOTIFY axisZChanged)
+ Q_PROPERTY(QScatter3DSeries *selectedSeries READ selectedSeries NOTIFY selectedSeriesChanged)
public:
explicit Q3DScatter(const QSurfaceFormat *format = 0, QWindow *parent = 0);
@@ -56,10 +57,13 @@ public:
void releaseAxis(QValue3DAxis *axis);
QList<QValue3DAxis *> axes() const;
+ QScatter3DSeries *selectedSeries() const;
+
signals:
void axisXChanged(QValue3DAxis *axis);
void axisYChanged(QValue3DAxis *axis);
void axisZChanged(QValue3DAxis *axis);
+ void selectedSeriesChanged(QScatter3DSeries *series);
private:
Q3DScatterPrivate *dptr();
diff --git a/src/datavisualization/engine/q3dsurface.cpp b/src/datavisualization/engine/q3dsurface.cpp
index a8a8235e..5705cc30 100644
--- a/src/datavisualization/engine/q3dsurface.cpp
+++ b/src/datavisualization/engine/q3dsurface.cpp
@@ -100,6 +100,8 @@ Q3DSurface::Q3DSurface(const QSurfaceFormat *format, QWindow *parent)
dptr()->m_shared = new Surface3DController(geometry());
d_ptr->setVisualController(dptr()->m_shared);
dptr()->m_shared->initializeOpenGL();
+ QObject::connect(dptr()->m_shared, &Surface3DController::selectedSeriesChanged,
+ this, &Q3DSurface::selectedSeriesChanged);
}
/*!
@@ -223,6 +225,17 @@ QValue3DAxis *Q3DSurface::axisZ() const
}
/*!
+ * \property Q3DSurface::selectedSeries
+ *
+ * The selected series or \c null. If selectionMode has \c SelectionMultiSeries flag set, this
+ * property holds the series which owns the selected point.
+ */
+QSurface3DSeries *Q3DSurface::selectedSeries() const
+{
+ return dptrc()->m_shared->selectedSeries();
+}
+
+/*!
* Adds \a axis to the graph. The axes added via addAxis are not yet taken to use,
* addAxis is simply used to give the ownership of the \a axis to the graph.
* The \a axis must not be null or added to another graph.
diff --git a/src/datavisualization/engine/q3dsurface.h b/src/datavisualization/engine/q3dsurface.h
index 7fb6e58a..673ce4d7 100644
--- a/src/datavisualization/engine/q3dsurface.h
+++ b/src/datavisualization/engine/q3dsurface.h
@@ -35,6 +35,7 @@ class QT_DATAVISUALIZATION_EXPORT Q3DSurface : public QAbstract3DGraph
Q_PROPERTY(QValue3DAxis *axisX READ axisX WRITE setAxisX NOTIFY axisXChanged)
Q_PROPERTY(QValue3DAxis *axisY READ axisY WRITE setAxisY NOTIFY axisYChanged)
Q_PROPERTY(QValue3DAxis *axisZ READ axisZ WRITE setAxisZ NOTIFY axisZChanged)
+ Q_PROPERTY(QSurface3DSeries *selectedSeries READ selectedSeries NOTIFY selectedSeriesChanged)
public:
explicit Q3DSurface(const QSurfaceFormat *format = 0, QWindow *parent = 0);
@@ -55,10 +56,13 @@ public:
void releaseAxis(QValue3DAxis *axis);
QList<QValue3DAxis *> axes() const;
+ QSurface3DSeries *selectedSeries() const;
+
signals:
void axisXChanged(QValue3DAxis *axis);
void axisYChanged(QValue3DAxis *axis);
void axisZChanged(QValue3DAxis *axis);
+ void selectedSeriesChanged(QSurface3DSeries *series);
private:
Q3DSurfacePrivate *dptr();
diff --git a/src/datavisualization/engine/qabstract3dgraph.cpp b/src/datavisualization/engine/qabstract3dgraph.cpp
index adb34458..aeb4a0b6 100644
--- a/src/datavisualization/engine/qabstract3dgraph.cpp
+++ b/src/datavisualization/engine/qabstract3dgraph.cpp
@@ -94,7 +94,7 @@ QT_BEGIN_NAMESPACE_DATAVISUALIZATION
\value SelectionMultiSeries
Setting this mode means that items for all series at same position are highlighted, instead
of just the selected item. The actual selection in the other series doesn't change.
- Multi-series selection is only supported for Q3DBars.
+ Multi-series selection is not supported for Q3DScatter.
*/
/*!
diff --git a/src/datavisualization/engine/scatter3dcontroller.cpp b/src/datavisualization/engine/scatter3dcontroller.cpp
index a1850a3c..8495052e 100644
--- a/src/datavisualization/engine/scatter3dcontroller.cpp
+++ b/src/datavisualization/engine/scatter3dcontroller.cpp
@@ -303,6 +303,7 @@ void Scatter3DController::setSelectedItem(int index, QScatter3DSeries *series)
index = invalidSelectionIndex();
if (index != m_selectedItem || series != m_selectedItemSeries) {
+ bool seriesChanged = (series != m_selectedItemSeries);
m_selectedItem = index;
m_selectedItemSeries = series;
m_changeTracker.selectedItemChanged = true;
@@ -316,6 +317,9 @@ void Scatter3DController::setSelectedItem(int index, QScatter3DSeries *series)
if (m_selectedItemSeries)
m_selectedItemSeries->dptr()->setSelectedItem(m_selectedItem);
+ if (seriesChanged)
+ emit selectedSeriesChanged(m_selectedItemSeries);
+
emitNeedRender();
}
}
diff --git a/src/datavisualization/engine/scatter3dcontroller_p.h b/src/datavisualization/engine/scatter3dcontroller_p.h
index 173d4e05..53d24549 100644
--- a/src/datavisualization/engine/scatter3dcontroller_p.h
+++ b/src/datavisualization/engine/scatter3dcontroller_p.h
@@ -93,6 +93,8 @@ public:
// Change selection mode
void setSelectionMode(QAbstract3DGraph::SelectionFlags mode);
+ inline QScatter3DSeries *selectedSeries() const { return m_selectedItemSeries; }
+
void setSelectedItem(int index, QScatter3DSeries *series);
static inline int invalidSelectionIndex() { return -1; }
virtual void clearSelection();
@@ -116,6 +118,9 @@ public slots:
void handleItemsRemoved(int startIndex, int count);
void handleItemsInserted(int startIndex, int count);
+signals:
+ void selectedSeriesChanged(QScatter3DSeries *series);
+
protected:
virtual void startRecordingRemovesAndInserts();
diff --git a/src/datavisualization/engine/surface3dcontroller.cpp b/src/datavisualization/engine/surface3dcontroller.cpp
index 553166e1..966a9d15 100644
--- a/src/datavisualization/engine/surface3dcontroller.cpp
+++ b/src/datavisualization/engine/surface3dcontroller.cpp
@@ -262,6 +262,7 @@ void Surface3DController::setSelectedPoint(const QPoint &position, QSurface3DSer
}
if (pos != m_selectedPoint || series != m_selectedSeries) {
+ bool seriesChanged = (series != m_selectedSeries);
m_selectedPoint = pos;
m_selectedSeries = series;
m_changeTracker.selectedPointChanged = true;
@@ -275,6 +276,9 @@ void Surface3DController::setSelectedPoint(const QPoint &position, QSurface3DSer
if (m_selectedSeries)
m_selectedSeries->dptr()->setSelectedPoint(m_selectedPoint);
+ if (seriesChanged)
+ emit selectedSeriesChanged(m_selectedSeries);
+
emitNeedRender();
}
}
diff --git a/src/datavisualization/engine/surface3dcontroller_p.h b/src/datavisualization/engine/surface3dcontroller_p.h
index 64a57b3b..93839798 100644
--- a/src/datavisualization/engine/surface3dcontroller_p.h
+++ b/src/datavisualization/engine/surface3dcontroller_p.h
@@ -80,6 +80,8 @@ public:
void setSelectedPoint(const QPoint &position, QSurface3DSeries *series, bool enterSlice);
virtual void clearSelection();
+ inline QSurface3DSeries *selectedSeries() const { return m_selectedSeries; }
+
virtual void handleAxisAutoAdjustRangeChangedInOrientation(
QAbstract3DAxis::AxisOrientation orientation, bool autoAdjust);
virtual void handleAxisRangeChangedBySender(QObject *sender);
@@ -103,6 +105,9 @@ public slots:
void handleFlatShadingSupportedChange(bool supported);
+signals:
+ void selectedSeriesChanged(QSurface3DSeries *series);
+
private:
void adjustValueAxisRange();
diff --git a/src/datavisualizationqml2/declarativebars.cpp b/src/datavisualizationqml2/declarativebars.cpp
index e24526c3..4f984c32 100644
--- a/src/datavisualizationqml2/declarativebars.cpp
+++ b/src/datavisualizationqml2/declarativebars.cpp
@@ -35,6 +35,8 @@ DeclarativeBars::DeclarativeBars(QQuickItem *parent)
QObject::connect(m_barsController, &Bars3DController::primarySeriesChanged,
this, &DeclarativeBars::primarySeriesChanged);
+ QObject::connect(m_barsController, &Bars3DController::selectedSeriesChanged,
+ this, &DeclarativeBars::selectedSeriesChanged);
}
DeclarativeBars::~DeclarativeBars()
@@ -124,6 +126,11 @@ bool DeclarativeBars::isBarSpacingRelative() const
return m_barsController->isBarSpecRelative();
}
+QBar3DSeries *DeclarativeBars::selectedSeries() const
+{
+ return m_barsController->selectedSeries();
+}
+
QQmlListProperty<QBar3DSeries> DeclarativeBars::seriesList()
{
return QQmlListProperty<QBar3DSeries>(this, this,
diff --git a/src/datavisualizationqml2/declarativebars_p.h b/src/datavisualizationqml2/declarativebars_p.h
index e5a90a01..be66860d 100644
--- a/src/datavisualizationqml2/declarativebars_p.h
+++ b/src/datavisualizationqml2/declarativebars_p.h
@@ -56,6 +56,7 @@ class DeclarativeBars : public AbstractDeclarative
Q_PROPERTY(QSizeF barSpacing READ barSpacing WRITE setBarSpacing NOTIFY barSpacingChanged)
Q_PROPERTY(bool barSpacingRelative READ isBarSpacingRelative WRITE setBarSpacingRelative NOTIFY barSpacingRelativeChanged)
Q_PROPERTY(QQmlListProperty<QBar3DSeries> seriesList READ seriesList)
+ Q_PROPERTY(QBar3DSeries *selectedSeries READ selectedSeries NOTIFY selectedSeriesChanged)
Q_PROPERTY(QBar3DSeries *primarySeries READ primarySeries WRITE setPrimarySeries NOTIFY primarySeriesChanged)
Q_CLASSINFO("DefaultProperty", "seriesList")
@@ -93,6 +94,8 @@ public:
void setPrimarySeries(QBar3DSeries *series);
QBar3DSeries *primarySeries() const;
+ QBar3DSeries *selectedSeries() const;
+
public slots:
void handleAxisXChanged(QAbstract3DAxis *axis);
void handleAxisYChanged(QAbstract3DAxis *axis);
@@ -108,6 +111,7 @@ signals:
void barSpacingRelativeChanged(bool relative);
void meshFileNameChanged(QString filename);
void primarySeriesChanged(QBar3DSeries *series);
+ void selectedSeriesChanged(QBar3DSeries *series);
private:
Bars3DController *m_barsController;
diff --git a/src/datavisualizationqml2/declarativescatter.cpp b/src/datavisualizationqml2/declarativescatter.cpp
index 81a1e879..dcc52a3d 100644
--- a/src/datavisualizationqml2/declarativescatter.cpp
+++ b/src/datavisualizationqml2/declarativescatter.cpp
@@ -31,6 +31,9 @@ DeclarativeScatter::DeclarativeScatter(QQuickItem *parent)
// Create the shared component on the main GUI thread.
m_scatterController = new Scatter3DController(boundingRect().toRect(), new Declarative3DScene);
setSharedController(m_scatterController);
+
+ QObject::connect(m_scatterController, &Scatter3DController::selectedSeriesChanged,
+ this, &DeclarativeScatter::selectedSeriesChanged);
}
DeclarativeScatter::~DeclarativeScatter()
@@ -68,6 +71,11 @@ void DeclarativeScatter::setAxisZ(QValue3DAxis *axis)
m_scatterController->setAxisZ(axis);
}
+QScatter3DSeries *DeclarativeScatter::selectedSeries() const
+{
+ return m_scatterController->selectedSeries();
+}
+
QQmlListProperty<QScatter3DSeries> DeclarativeScatter::seriesList()
{
return QQmlListProperty<QScatter3DSeries>(this, this,
diff --git a/src/datavisualizationqml2/declarativescatter_p.h b/src/datavisualizationqml2/declarativescatter_p.h
index bca44085..f36d2a7b 100644
--- a/src/datavisualizationqml2/declarativescatter_p.h
+++ b/src/datavisualizationqml2/declarativescatter_p.h
@@ -49,6 +49,7 @@ class DeclarativeScatter : public AbstractDeclarative
Q_PROPERTY(QValue3DAxis *axisX READ axisX WRITE setAxisX NOTIFY axisXChanged)
Q_PROPERTY(QValue3DAxis *axisY READ axisY WRITE setAxisY NOTIFY axisYChanged)
Q_PROPERTY(QValue3DAxis *axisZ READ axisZ WRITE setAxisZ NOTIFY axisZChanged)
+ Q_PROPERTY(QScatter3DSeries *selectedSeries READ selectedSeries NOTIFY selectedSeriesChanged)
Q_PROPERTY(QQmlListProperty<QScatter3DSeries> seriesList READ seriesList)
Q_CLASSINFO("DefaultProperty", "seriesList")
@@ -71,6 +72,8 @@ public:
Q_INVOKABLE void addSeries(QScatter3DSeries *series);
Q_INVOKABLE void removeSeries(QScatter3DSeries *series);
+ QScatter3DSeries *selectedSeries() const;
+
public slots:
void handleAxisXChanged(QAbstract3DAxis *axis);
void handleAxisYChanged(QAbstract3DAxis *axis);
@@ -80,6 +83,7 @@ signals:
void axisXChanged(QValue3DAxis *axis);
void axisYChanged(QValue3DAxis *axis);
void axisZChanged(QValue3DAxis *axis);
+ void selectedSeriesChanged(QScatter3DSeries *series);
protected:
Scatter3DController *m_scatterController;
diff --git a/src/datavisualizationqml2/declarativesurface.cpp b/src/datavisualizationqml2/declarativesurface.cpp
index c0e1ddcc..78519586 100644
--- a/src/datavisualizationqml2/declarativesurface.cpp
+++ b/src/datavisualizationqml2/declarativesurface.cpp
@@ -32,6 +32,9 @@ DeclarativeSurface::DeclarativeSurface(QQuickItem *parent)
// Create the shared component on the main GUI thread.
m_surfaceController = new Surface3DController(boundingRect().toRect(), new Declarative3DScene);
setSharedController(m_surfaceController);
+
+ QObject::connect(m_surfaceController, &Surface3DController::selectedSeriesChanged,
+ this, &DeclarativeSurface::selectedSeriesChanged);
}
DeclarativeSurface::~DeclarativeSurface()
@@ -69,16 +72,22 @@ void DeclarativeSurface::setAxisZ(QValue3DAxis *axis)
m_surfaceController->setAxisZ(axis);
}
+QSurface3DSeries *DeclarativeSurface::selectedSeries() const
+{
+ return m_surfaceController->selectedSeries();
+}
+
QQmlListProperty<QSurface3DSeries> DeclarativeSurface::seriesList()
{
return QQmlListProperty<QSurface3DSeries>(this, this,
- &DeclarativeSurface::appendSeriesFunc,
- &DeclarativeSurface::countSeriesFunc,
- &DeclarativeSurface::atSeriesFunc,
- &DeclarativeSurface::clearSeriesFunc);
+ &DeclarativeSurface::appendSeriesFunc,
+ &DeclarativeSurface::countSeriesFunc,
+ &DeclarativeSurface::atSeriesFunc,
+ &DeclarativeSurface::clearSeriesFunc);
}
-void DeclarativeSurface::appendSeriesFunc(QQmlListProperty<QSurface3DSeries> *list, QSurface3DSeries *series)
+void DeclarativeSurface::appendSeriesFunc(QQmlListProperty<QSurface3DSeries> *list,
+ QSurface3DSeries *series)
{
reinterpret_cast<DeclarativeSurface *>(list->data)->addSeries(series);
}
diff --git a/src/datavisualizationqml2/declarativesurface_p.h b/src/datavisualizationqml2/declarativesurface_p.h
index b354fe59..bba3887d 100644
--- a/src/datavisualizationqml2/declarativesurface_p.h
+++ b/src/datavisualizationqml2/declarativesurface_p.h
@@ -50,6 +50,7 @@ class DeclarativeSurface : public AbstractDeclarative
Q_PROPERTY(QValue3DAxis *axisX READ axisX WRITE setAxisX NOTIFY axisXChanged)
Q_PROPERTY(QValue3DAxis *axisY READ axisY WRITE setAxisY NOTIFY axisYChanged)
Q_PROPERTY(QValue3DAxis *axisZ READ axisZ WRITE setAxisZ NOTIFY axisZChanged)
+ Q_PROPERTY(QSurface3DSeries *selectedSeries READ selectedSeries NOTIFY selectedSeriesChanged)
Q_PROPERTY(QQmlListProperty<QSurface3DSeries> seriesList READ seriesList)
Q_CLASSINFO("DefaultProperty", "seriesList")
@@ -72,6 +73,8 @@ public:
Q_INVOKABLE void addSeries(QSurface3DSeries *series);
Q_INVOKABLE void removeSeries(QSurface3DSeries *series);
+ QSurface3DSeries *selectedSeries() const;
+
public slots:
void handleAxisXChanged(QAbstract3DAxis *axis);
void handleAxisYChanged(QAbstract3DAxis *axis);
@@ -81,6 +84,7 @@ signals:
void axisXChanged(QValue3DAxis *axis);
void axisYChanged(QValue3DAxis *axis);
void axisZChanged(QValue3DAxis *axis);
+ void selectedSeriesChanged(QSurface3DSeries *series);
private:
Surface3DController *m_surfaceController;