summaryrefslogtreecommitdiffstats
path: root/examples/charts/chartsgallery/contentwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/charts/chartsgallery/contentwidget.cpp')
-rw-r--r--examples/charts/chartsgallery/contentwidget.cpp62
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);
+}