diff options
Diffstat (limited to 'src/datavisualization/data/qscatter3dseries.cpp')
-rw-r--r-- | src/datavisualization/data/qscatter3dseries.cpp | 45 |
1 files changed, 43 insertions, 2 deletions
diff --git a/src/datavisualization/data/qscatter3dseries.cpp b/src/datavisualization/data/qscatter3dseries.cpp index f0374339..aff0f33c 100644 --- a/src/datavisualization/data/qscatter3dseries.cpp +++ b/src/datavisualization/data/qscatter3dseries.cpp @@ -126,6 +126,39 @@ QScatterDataProxy *QScatter3DSeries::dataProxy() const } /*! + * \property QScatter3DSeries::selectedItem + * + * Selects an item at the \a index. The \a index is the index in the data array of the series. + * Only one item can be selected at a time. + * To clear selection, set invalidSelectionIndex() as the \a index. + * If this series is added to a graph, the graph can adjust the selection according to user + * interaction or if it becomes invalid. Selecting an item on another added series will also + * clear the selection. + */ +void QScatter3DSeries::setSelectedItem(int index) +{ + // Don't do this in private to avoid loops, as that is used for callback from controller. + if (d_ptr->m_controller) + static_cast<Scatter3DController *>(d_ptr->m_controller)->setSelectedItem(index, this); + else + dptr()->setSelectedItem(index); +} + +int QScatter3DSeries::selectedItem() const +{ + return dptrc()->m_selectedItem; +} + +/*! + * \return an invalid index for selection. Set this index to selectedItem property if you + * want to clear the selection. + */ +int QScatter3DSeries::invalidSelectionIndex() const +{ + return Scatter3DController::invalidSelectionIndex(); +} + +/*! * \internal */ QScatter3DSeriesPrivate *QScatter3DSeries::dptr() @@ -144,7 +177,8 @@ const QScatter3DSeriesPrivate *QScatter3DSeries::dptrc() const // QScatter3DSeriesPrivate QScatter3DSeriesPrivate::QScatter3DSeriesPrivate(QScatter3DSeries *q) - : QAbstract3DSeriesPrivate(q, QAbstract3DSeries::SeriesTypeScatter) + : QAbstract3DSeriesPrivate(q, QAbstract3DSeries::SeriesTypeScatter), + m_selectedItem(Scatter3DController::invalidSelectionIndex()) { m_itemLabelFormat = QStringLiteral("@valueTitle: @valueLabel"); } @@ -179,7 +213,6 @@ void QScatter3DSeriesPrivate::connectControllerAndProxy(Abstract3DController *ne if (newController && scatterDataProxy) { Scatter3DController *controller = static_cast<Scatter3DController *>(newController); - QObject::connect(scatterDataProxy, &QScatterDataProxy::arrayReset, controller, &Scatter3DController::handleArrayReset); QObject::connect(scatterDataProxy, &QScatterDataProxy::itemsAdded, @@ -196,4 +229,12 @@ void QScatter3DSeriesPrivate::connectControllerAndProxy(Abstract3DController *ne } } +void QScatter3DSeriesPrivate::setSelectedItem(int index) +{ + if (index != m_selectedItem) { + m_selectedItem = index; + emit qptr()->selectedItemChanged(m_selectedItem); + } +} + QT_DATAVISUALIZATION_END_NAMESPACE |