Revision control
+ // Copyright (C) 2026 The Qt Company Ltd.
+ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+ // Qt-Security score:significant reason:default
+
+ #include <QtCore/qlist.h>
+ #include <QtCanvasPainter/qcanvaspainteritem.h>
+ #include <QtGraphs/qcustomseries.h>
+ #include <QtGraphs/qcustomseriescanvasrenderer.h>
+
+ //! [customseries]
+ class ExampleCustomSeries : public QCustomSeries
+ {
+ public:
+ explicit ExampleCustomSeries(QObject *parent = nullptr)
+ : QCustomSeries(parent)
+ {}
+
+ struct CustomSeriesData
+ {
+ qreal x = 0;
+ qreal y = 0;
+ qreal size = 0;
+ QColor color;
+ };
+
+ QList<CustomSeriesData> seriesData() const
+ {
+ return m_seriesData;
+ }
+
+ private:
+ QList<CustomSeriesData> m_seriesData;
+ };
+ //! [customseries]
+
+ //! [customseries_renderer]
+ class ExampleCustomSeriesRenderer : public QCustomSeriesCanvasRenderer
+ {
+ public:
+ void synchronizeData(QCustomSeries *series, QCanvasPainterItem *item) override
+ {
+ Q_UNUSED(item);
+ const auto customSeries = static_cast<ExampleCustomSeries *>(series);
+ m_renderData.reserve(customSeries->seriesData().size());
+ for (const auto &i : customSeries->seriesData())
+ m_renderData.push_back({QRectF(i.x, i.y, i.size, i.size), i.color});
+ }
+
+ void canvasPaint(QCanvasPainter *p) override
+ {
+ for (const auto &i : std::as_const(m_renderData)) {
+ p->setFillStyle(i.color);
+ p->fillRect(i.rect);
+ }
+ }
+
+ private:
+ struct CustomSeriesRenderData
+ {
+ QRectF rect;
+ QColor color;
+ };
+
+ QList<CustomSeriesRenderData> m_renderData;
+ };
+ //! [customseries_renderer]