diff options
author | Kaj Grönholm <kaj.gronholm@qt.io> | 2024-05-13 10:03:17 +0300 |
---|---|---|
committer | Kaj Grönholm <kaj.gronholm@qt.io> | 2024-05-14 13:57:14 +0300 |
commit | 450c20f8b84d4240c12f4032d5c5c24c14ffaa74 (patch) | |
tree | 948f0668327609cc440d89ae751566732a578227 | |
parent | 0ce9ec0a88e26b9034e6b6fdfd260b193ca31b31 (diff) |
API: Add selectedColor property into QBarSet
This way API matches to QXYSeries and QAreaSeries.
Task-number: QTBUG-125254
Change-Id: I6cc69cfe7ce4917174f1e7aa8af9f8eef5127233
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Reviewed-by: Jere Tuliniemi <jere.tuliniemi@qt.io>
-rw-r--r-- | examples/graphs/2d/testbed/qml/testbed/BarSelection.qml | 2 | ||||
-rw-r--r-- | src/graphs2d/barchart/qbarset.cpp | 9 | ||||
-rw-r--r-- | src/graphs2d/barchart/qbarset.h | 1 | ||||
-rw-r--r-- | src/graphs2d/qsgrenderer/barsrenderer.cpp | 16 | ||||
-rw-r--r-- | src/graphs2d/qsgrenderer/barsrenderer_p.h | 1 |
5 files changed, 24 insertions, 5 deletions
diff --git a/examples/graphs/2d/testbed/qml/testbed/BarSelection.qml b/examples/graphs/2d/testbed/qml/testbed/BarSelection.qml index 99b73bf..f22b70c 100644 --- a/examples/graphs/2d/testbed/qml/testbed/BarSelection.qml +++ b/examples/graphs/2d/testbed/qml/testbed/BarSelection.qml @@ -33,7 +33,7 @@ Rectangle { BarSeries { id: barSeries selectable: true - BarSet { id: set1; label: "Axel"; values: [1, 2, 3, 4] } + BarSet { id: set1; label: "Axel"; values: [1, 2, 3, 4]; selectedColor: "red" } BarSet { id: set2; label: "Frank"; values: [8, 2, 6, 0] } BarSet { id: set3; label: "James"; values: [4+3*Math.sin(fA.elapsedTime), 5+3*Math.sin(fA.elapsedTime), 2, 3] } FrameAnimation { diff --git a/src/graphs2d/barchart/qbarset.cpp b/src/graphs2d/barchart/qbarset.cpp index ddefadd..5bdd4cf 100644 --- a/src/graphs2d/barchart/qbarset.cpp +++ b/src/graphs2d/barchart/qbarset.cpp @@ -56,6 +56,15 @@ QT_BEGIN_NAMESPACE */ /*! + \property QBarSet::selectedColor + \brief The fill color of the selected set. +*/ +/*! + \qmlproperty color BarSet::selectedColor + The fill color of the selected set. +*/ + +/*! \property QBarSet::borderColor \brief The border color of the bar set. */ diff --git a/src/graphs2d/barchart/qbarset.h b/src/graphs2d/barchart/qbarset.h index ce9f5ce..dd727ad 100644 --- a/src/graphs2d/barchart/qbarset.h +++ b/src/graphs2d/barchart/qbarset.h @@ -20,6 +20,7 @@ class Q_GRAPHS_EXPORT QBarSet : public QObject Q_OBJECT Q_PROPERTY(QString label READ label WRITE setLabel NOTIFY labelChanged) Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged) + Q_PROPERTY(QColor selectedColor READ selectedColor WRITE setSelectedColor NOTIFY selectedColorChanged) Q_PROPERTY(QColor borderColor READ borderColor WRITE setBorderColor NOTIFY borderColorChanged) Q_PROPERTY(QColor labelColor READ labelColor WRITE setLabelColor NOTIFY labelColorChanged) Q_PROPERTY(QVariantList values READ values WRITE setValues NOTIFY valuesChanged) diff --git a/src/graphs2d/qsgrenderer/barsrenderer.cpp b/src/graphs2d/qsgrenderer/barsrenderer.cpp index e0ea3af..4caa0e5 100644 --- a/src/graphs2d/qsgrenderer/barsrenderer.cpp +++ b/src/graphs2d/qsgrenderer/barsrenderer.cpp @@ -34,6 +34,15 @@ QColor BarsRenderer::getSetColor(QBarSeries *series, QBarSet *set, int barSeries return color; } +QColor BarsRenderer::getSetSelectedColor(QBarSeries *series, QBarSet *set) +{ + auto seriesTheme = series->theme(); + QColor color = set->selectedColor().alpha() != 0 + ? set->selectedColor() + : seriesTheme->singleHighlightColor(); + return color; +} + QColor BarsRenderer::getSetBorderColor(QBarSeries *series, QBarSet *set, int barSeriesIndex) { auto seriesTheme = series->theme(); @@ -299,7 +308,7 @@ void BarsRenderer::updateVerticalBars(QBarSeries *series, int setCount, int valu // Collect the series data BarSeriesData d; d.rect = barRect; - d.color = color; + d.color = isSelected ? getSetSelectedColor(series, s) : color; d.borderColor = borderColor; d.borderWidth = borderWidth; d.isSelected = isSelected; @@ -409,7 +418,7 @@ void BarsRenderer::updateHorizontalBars(QBarSeries *series, int setCount, int va // Collect the series data BarSeriesData d; d.rect = barRect; - d.color = color; + d.color = isSelected ? getSetSelectedColor(series, s) : color; d.borderColor = borderColor; d.borderWidth = borderWidth; d.isSelected = isSelected; @@ -499,8 +508,7 @@ void BarsRenderer::updateSeries(QBarSeries *series) auto &barItem = m_rectNodes[barIndex]; BarSeriesData d = *i; barItem->setRect(d.rect); - QColor barColor = d.isSelected ? m_graph->theme()->singleHighlightColor() : d.color; - barItem->setColor(barColor); + barItem->setColor(d.color); barItem->setPenWidth(d.borderWidth); barItem->setPenColor(d.borderColor); barItem->setRadius(4.0); diff --git a/src/graphs2d/qsgrenderer/barsrenderer_p.h b/src/graphs2d/qsgrenderer/barsrenderer_p.h index 33d7ea8..5d70f90 100644 --- a/src/graphs2d/qsgrenderer/barsrenderer_p.h +++ b/src/graphs2d/qsgrenderer/barsrenderer_p.h @@ -62,6 +62,7 @@ private: void updateVerticalBars(QBarSeries *series, int setCount, int valuesPerSet); void updateHorizontalBars(QBarSeries *series, int setCount, int valuesPerSet); QColor getSetColor(QBarSeries *series, QBarSet *set, int barSerieIndex); + QColor getSetSelectedColor(QBarSeries *series, QBarSet *set); QColor getSetBorderColor(QBarSeries *series, QBarSet *set, int barSerieIndex); qreal getSetBorderWidth(QBarSeries *series, QBarSet *set); QString generateLabelText(QBarSeries *series, qreal value); |