The following code:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtCharts>
#include <QChartView>
#include <QBarSet>
#include <QBarSeries>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
QBarSet *set0 = new QBarSet("People");
*set0 << 30 << 40 << 10 << 20 << 60 << 10;
QBarSeries *series = new QBarSeries();
series->append(set0);
QChart *chart = new QChart();
chart->addSeries(series);
chart->setTitle("Chart Example");
chart->setAnimationOptions(QChart::SeriesAnimations);
QStringList categories;
categories << "2023" << "2024" << "2025";
categories << "2026";
QBarCategoryAxis *axis = new QBarCategoryAxis();
axis->append(categories);
chart->createDefaultAxes();
chart->setAxisX(axis, series);
QChartView *chartView = new QChartView(chart);
chartView->setParent(ui->horizontalFrame);
}
makes the bar chart visible:
But when I move the bar chart code inside a pushbutton slot:
void MainWindow::on_pushButton_clicked()
{
QBarSet *set0 = new QBarSet("People");
*set0 << 30 << 40 << 10 << 20 << 60 << 10;
QBarSeries *series = new QBarSeries();
series->append(set0);
QChart *chart = new QChart();
chart->addSeries(series);
chart->setTitle("Chart Example");
chart->setAnimationOptions(QChart::SeriesAnimations);
QStringList categories;
categories << "2023" << "2024" << "2025";
categories << "2026";
QBarCategoryAxis *axis = new QBarCategoryAxis();
axis->append(categories);
chart->createDefaultAxes();
chart->setAxisX(axis, series);
QChartView *chartView = new QChartView(chart);
chartView->setParent(ui->horizontalFrame);
}
it does not become visible:
How do I make the bar chart visible when adding it in a slot?