diff --git a/src/charts/scatterchart/qscatterseries.cpp b/src/charts/scatterchart/qscatterseries.cpp index 25e685c..ca643a6 100644 --- a/src/charts/scatterchart/qscatterseries.cpp +++ b/src/charts/scatterchart/qscatterseries.cpp @@ -125,13 +125,17 @@ \fn void QScatterSeries::colorChanged(QColor color) Signal is emitted when the fill (brush) color has changed to \a color. */ +/*! + \qmlsignal ScatterSeries::onColorChanged(color color) + Signal is emitted when the fill (brush) color has changed to \a color. +*/ /*! \fn void QScatterSeries::borderColorChanged(QColor color) Signal is emitted when the line (pen) color has changed to \a color. */ /*! - \qmlsignal ScatterSeries::borderColorChanged(color color) + \qmlsignal ScatterSeries::onBorderColorChanged(color color) Signal is emitted when the line (pen) color has changed to \a color. */ @@ -141,6 +145,23 @@ \sa QAbstractSeries, SeriesType */ +/*! + \fn void QScatterSeries::markerShapeChanged(MarkerShape shape) + Signal is emitted when the marker shape has changed to \a shape. +*/ +/*! + \qmlsignal ScatterSeries::onMarkerShapeChanged(MarkerShape shape) + Signal is emitted when the marker shape has changed to \a shape. +*/ +/*! + \fn void QScatterSeries::markerSizeChanged(qreal size) + Signal is emitted when the marker size has changed to \a size. +*/ +/*! + \qmlsignal ScatterSeries::onMarkerSizeChanged(real size) + Signal is emitted when the marker size has changed to \a size. +*/ + QT_CHARTS_BEGIN_NAMESPACE /*! @@ -251,6 +272,7 @@ void QScatterSeries::setMarkerShape(MarkerShape shape) if (d->m_shape != shape) { d->m_shape = shape; emit d->updated(); + emit markerShapeChanged(shape); } } @@ -267,6 +289,7 @@ void QScatterSeries::setMarkerSize(qreal size) if (!qFuzzyCompare(d->m_size, size)) { d->m_size = size; emit d->updated(); + emit markerSizeChanged(size); } } diff --git a/src/charts/scatterchart/qscatterseries.h b/src/charts/scatterchart/qscatterseries.h index ca90146..5770880 100644 --- a/src/charts/scatterchart/qscatterseries.h +++ b/src/charts/scatterchart/qscatterseries.h @@ -31,8 +31,8 @@ class QT_CHARTS_EXPORT QScatterSeries : public QXYSeries Q_OBJECT Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged) Q_PROPERTY(QColor borderColor READ borderColor WRITE setBorderColor NOTIFY borderColorChanged) - Q_PROPERTY(MarkerShape markerShape READ markerShape WRITE setMarkerShape) - Q_PROPERTY(qreal markerSize READ markerSize WRITE setMarkerSize) + Q_PROPERTY(MarkerShape markerShape READ markerShape WRITE setMarkerShape NOTIFY markerShapeChanged) + Q_PROPERTY(qreal markerSize READ markerSize WRITE setMarkerSize NOTIFY markerSizeChanged) Q_PROPERTY(QBrush brush READ brush WRITE setBrush) Q_ENUMS(MarkerShape) @@ -61,6 +61,8 @@ public: Q_SIGNALS: void colorChanged(QColor color); void borderColorChanged(QColor color); + void markerShapeChanged(MarkerShape shape); + void markerSizeChanged(qreal size); private: Q_DECLARE_PRIVATE(QScatterSeries) diff --git a/src/charts/xychart/glxyseriesdata.cpp b/src/charts/xychart/glxyseriesdata.cpp index 2dafafd..fbaf4b2 100644 --- a/src/charts/xychart/glxyseriesdata.cpp +++ b/src/charts/xychart/glxyseriesdata.cpp @@ -44,13 +44,17 @@ void GLXYSeriesDataManager::setPoints(QXYSeries *series, const AbstractDomain *d QScatterSeries *scatter = static_cast(series); data->width = float(scatter->markerSize()); sc = scatter->color(); // Scatter overwrites color property + connect(scatter, &QScatterSeries::colorChanged, this, + &GLXYSeriesDataManager::handleScatterColorChange); + connect(scatter, &QScatterSeries::markerSizeChanged, this, + &GLXYSeriesDataManager::handleScatterMarkerSizeChange); } else { data->width = float(series->pen().widthF()); sc = series->color(); + connect(series, &QXYSeries::penChanged, this, + &GLXYSeriesDataManager::handleSeriesPenChange); } data->color = QVector3D(float(sc.redF()), float(sc.greenF()), float(sc.blueF())); - connect(series, &QXYSeries::penChanged, this, - &GLXYSeriesDataManager::handleSeriesPenChange); connect(series, &QXYSeries::useOpenGLChanged, this, &GLXYSeriesDataManager::handleSeriesOpenGLChange); m_seriesDataMap.insert(series, data); @@ -133,6 +137,7 @@ void GLXYSeriesDataManager::handleSeriesPenChange() QColor sc = series->color(); data->color = QVector3D(float(sc.redF()), float(sc.greenF()), float(sc.blueF())); data->width = float(series->pen().widthF()); + data->dirty = true; } } } @@ -144,4 +149,30 @@ void GLXYSeriesDataManager::handleSeriesOpenGLChange() removeSeries(series); } +void GLXYSeriesDataManager::handleScatterColorChange() +{ + QScatterSeries *series = qobject_cast(sender()); + if (series) { + GLXYSeriesData *data = m_seriesDataMap.value(series); + if (data) { + QColor sc = series->color(); + data->color = QVector3D(float(sc.redF()), float(sc.greenF()), float(sc.blueF())); + data->dirty = true; + } + } +} + +void GLXYSeriesDataManager::handleScatterMarkerSizeChange() +{ + QScatterSeries *series = qobject_cast(sender()); + if (series) { + GLXYSeriesData *data = m_seriesDataMap.value(series); + if (data) { + data->width =float(series->markerSize()); + data->dirty = true; + } + } +} + QT_CHARTS_END_NAMESPACE + diff --git a/src/charts/xychart/glxyseriesdata_p.h b/src/charts/xychart/glxyseriesdata_p.h index 0f59eff..da55108 100644 --- a/src/charts/xychart/glxyseriesdata_p.h +++ b/src/charts/xychart/glxyseriesdata_p.h @@ -77,6 +77,8 @@ public Q_SLOTS: void cleanup(); void handleSeriesPenChange(); void handleSeriesOpenGLChange(); + void handleScatterColorChange(); + void handleScatterMarkerSizeChange(); Q_SIGNALS: void seriesRemoved(const QXYSeries *series);