summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaj Grönholm <kaj.gronholm@qt.io>2024-05-13 10:03:17 +0300
committerKaj Grönholm <kaj.gronholm@qt.io>2024-05-14 13:57:14 +0300
commit450c20f8b84d4240c12f4032d5c5c24c14ffaa74 (patch)
tree948f0668327609cc440d89ae751566732a578227
parent0ce9ec0a88e26b9034e6b6fdfd260b193ca31b31 (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.qml2
-rw-r--r--src/graphs2d/barchart/qbarset.cpp9
-rw-r--r--src/graphs2d/barchart/qbarset.h1
-rw-r--r--src/graphs2d/qsgrenderer/barsrenderer.cpp16
-rw-r--r--src/graphs2d/qsgrenderer/barsrenderer_p.h1
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);