diff options
Diffstat (limited to 'examples/charts/chartsgallery/contentwidget.cpp')
-rw-r--r-- | examples/charts/chartsgallery/contentwidget.cpp | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/examples/charts/chartsgallery/contentwidget.cpp b/examples/charts/chartsgallery/contentwidget.cpp new file mode 100644 index 00000000..06ea8314 --- /dev/null +++ b/examples/charts/chartsgallery/contentwidget.cpp @@ -0,0 +1,62 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only + +#include "contentwidget.h" + +#include <QChart> +#include <QChartView> +#include <QFont> +#include <QLabel> +#include <QVBoxLayout> + +ContentWidget::ContentWidget(QWidget *parent) + : QWidget(parent) +{ +} + +void ContentWidget::load() +{ + if (m_loaded || layout()) + return; + + if (!doLoad()) { + auto errorLabel = new QLabel(this); + auto errorLayout = new QVBoxLayout(this); + errorLabel->setText(tr("Error loading the example:\n%1").arg(m_loadError)); + QFont font = errorLabel->font(); + font.setPointSize(20); + errorLabel->setFont(font); + errorLabel->setAlignment(Qt::AlignCenter); + errorLayout->addWidget(errorLabel); + setLayout(errorLayout); + } + + m_loaded = true; +} + +bool ContentWidget::doLoad() +{ + // Most examples do their initialization in constructor. + // Only those that can fail and show error message need to reimplement this method. + return true; +} + +void ContentWidget::resizeEvent(QResizeEvent *) +{ + if (m_defaultChartView) + m_defaultChartView->resize(size()); +} + +// Most examples are simple and need only basic chart view widget, so provide it in this base class +// to avoid duplicating code +void ContentWidget::createDefaultChartView(QChart *chart) +{ + m_defaultChartView = new QChartView(chart, this); + m_defaultChartView->setRenderHint(QPainter::Antialiasing); +} + +void ContentWidget::setDefaultChartView(QChartView *view) +{ + m_defaultChartView = view; + m_defaultChartView->setRenderHint(QPainter::Antialiasing); +} |